Vue实战【Vue项目开发时常见的几个错误】
创始人
2025-05-31 16:29:57
0

目录

  • 🌟前言
  • 🌟安装超时(install timeout)
  • 🌟can’t not find ‘xxModule’ - 找不到某些依赖或者模块
  • 🌟data functions should return an object
  • 🌟给组件内的原生控件添加事件,不生效了
  • 🌟我在函数内用了this.xxx=,为什么抛出Cannot set property ‘xxx’ of undefined;
  • 🌟Uncaught ReferenceError: xxx is not define;
  • 🌟npm run dev 报端口错误!Error: listen EADDRINUSE :::8080
  • 🌟the “scope” attribute for scoped slots …. replaced by “slot-scope” since 2.5
  • 🌟单组件中里面的 import xxx from ‘@/components/layout/xxx’中的@是什么
  • 🌟Invalid prop: type check failed for prop “xxx”. Expected Boolean, got String.
  • 🌟Unknown custom element: - did you register the component correctly?
  • 🌟Unexpected token: operator xxxxx
  • 🌟跨域问题怎么破!比如No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
  • 🌟Component template shold contain exactly one root element.If you are useing v-if on multiple elements , xxxxx
  • 🌟写在最后
  • 🌟JSON包里写函数,关注博主不迷路

🌟前言

大家好,上一期的Vue实战都阅读了吗?上一期主要是讲解了Vue2中父子组件如何进行通信,通过父子组件通信我们可以把一些繁琐简单的工作抽离出来封装成组件,以便与我们更好书写代码。
相信大家在实际开发当中也会各种各样的控制台报错,今天博主就为大家总结一些,大家还有其他的也可以在评论区补充哦。

🌟安装超时(install timeout)

在我们拿到新项目npm install下载依赖的时候,经常会报的一个错误,方案有这么些:

cnpm : 国内对npm的镜像版本
cnpm website: https://npm.taobao.org/
npm install -g cnpm --registry=https://registry.npm.taobao.org
// cnpm 的大多命令跟 npm 的是一致的,比如安装,卸载这些
yarn 和 npm 改源大法
//使用 nrm 模块 : www.npmjs.com/package/nrm
npm config : npm config set registry https://registry.npm.taobao.org
yarn config : yarn config set registry https://registry.npm.taobao.org
当然条件允许的话可以上一些科技哈哈哈

🌟can’t not find ‘xxModule’ - 找不到某些依赖或者模块

这种情况一般报错信息可以看到是哪个包抛出的信息.,一般卸载这个模块,安装重新安装下即可.

🌟data functions should return an object

这个问题是 vue 实例内,单组件的data必须返回一个对象;如下


export default {name: 'page-router-view',data () {return {tabs: [{title: '财务信息',url: '/userinfo'},{title: '帐号信息',url: '/userinfo/base'}]}}
}

为什么要 return 一个数据对象呢? 官方解释如下: data
必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例。如果 data
仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象!简言之,组件复用下,不会造成数据同时指向一处,造出牵一发而动全身的破问题

🌟给组件内的原生控件添加事件,不生效了






{{item.menuName}}



{{item.menuName}}


🌟我在函数内用了this.xxx=,为什么抛出Cannot set property ‘xxx’ of undefined;

这又是this的套路了,this是和当前运行的上下文绑定的;
一般你在axios或者其他 promise , 或者setInterval 这些默认都是指向最外层的全局钩子.
简单点说:“最外层的上下文就是 window,vue内则是 Vue 对象而不是实例!”;
解决方案:

暂存法: 函数内先缓存 this , let that = this;(let是 es6, es5用 var)
箭头函数: 会强行关联当前运行区域为 this 的上下文;

🌟Uncaught ReferenceError: xxx is not define;

实例内的 data 对应的变量没有声明,你导入模块报这个错误,那一定是导出没写好。

🌟npm run dev 报端口错误!Error: listen EADDRINUSE :::8080

自己用 webpack搭脚手架的都不用我说了;Vue-cli 里面的 webpack 配置: config/index.js


dev: {env: require("./dev.env"),port: 8080, //  这里这里,若是这个端口已经给系统的其他程序占用了.改我改我!!!!!!autoOpenBrowser: true,assetsSubDirectory: "static",assetsPublicPath: "/",proxyTable: {"/bp-api": {target: "http://new.d.st.cn",changeOrigin: true,// pathRewrite: {//   "^/bp-api": "/"// }}
},

🌟the “scope” attribute for scoped slots …. replaced by “slot-scope” since 2.5

这个问题只出现老项目升级到 vue2.5+的时候, 提示就是 scope 现在要用 slot-scope 来代替,但是 scope 暂时可以用,以后会移除

🌟单组件中里面的 import xxx from ‘@/components/layout/xxx’中的@是什么

这是 webpack 方面的知识,看到了也说下吧…webpack可以配置alias(也就是路径别名),玩过 linux 或者 mac 都知道。
依旧如上,会自己搭脚手架的不用我说了…看看 vue-cli 里面的;
文件名: build -> webpack.base.conf.js

resolve: {extensions: [".js", ".vue", ".json"], // 可以导入的时候忽略的拓展名范围alias: {vue$: "vue/dist/vue.esm.js",  "@": resolve("src"),  // 这里就是别名了,比如@就代表直接从/src 下开始找起!!!"~": resolve("src/components")}
},

🌟Invalid prop: type check failed for prop “xxx”. Expected Boolean, got String.

这种问题一般就是组件内的 props 类型已经设置了接受的范围类型, 而你传递的值却又不是它需要的类型,写代码严谨些 OK?

🌟Unknown custom element: - did you register the component correctly?

组件没有正确引入或者正确使用,依次确认

导入对应的组件
在 components 内声明
在 dom 区域声明标签

🌟Unexpected token: operator xxxxx

大佬,这个一看就是语法错误啊,基本都是符号问题, 一般报错会给出哪一行或者哪个组件

🌟跨域问题怎么破!比如No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

1: CORS , 前后端都要对应去配置,IE10+
2: nginx 反向代理,一劳永逸 <-- 线上环境可以用这个

线下开发模式,比如你用了vue-cli, 里面的 webpack 有引入了proxyTable这么个玩意, 也可以做接口反向代理。


// 在 config 目录下的index.js
proxyTable: {"/bp-api": {target: "http://new.d.st.cn",changeOrigin: true,// pathRewrite: {//   "^/bp-api": "/"// }}
}// target : 就是 api 的代理的实际路径
// changeOrigin: 就是是变源,必须是...
// pathRewrite : 就是路径重定向,一看就知道

🌟Component template shold contain exactly one root element.If you are useing v-if on multiple elements , xxxxx

大体就是说,单组件渲染 DOM 区域必须要有一个根元素,不能出现同级元素. 可以用v-if和v-else-if指令来控制其他元素达到并存的状态。
换个直白的解释,就是有一个唯一的父类,包裹者; 比如一个 div(父包含块) 内部多少个同级或者嵌套都行,但是最外层元素不能出现同级元素!

🌟写在最后

这篇文章分析那个了一些vue开发比较常见的报错,你是否也经历过呢?后续会为小伙伴们持续更新Vue的一些实战小魔法!各位小伙伴让我们 let’s be prepared at all times!

🌟JSON包里写函数,关注博主不迷路

✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!

相关内容

热门资讯

【MySQL】锁 锁 文章目录锁全局锁表级锁表锁元数据锁(MDL)意向锁AUTO-INC锁...
【内网安全】 隧道搭建穿透上线... 文章目录内网穿透-Ngrok-入门-上线1、服务端配置:2、客户端连接服务端ÿ...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
数据分页展示逻辑 import java.util.Arrays;import java.util.List;impo...
Redis为什么选择单线程?R... 目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、R...
【已解决】ERROR: Cou... 正确指令: pip install pyyaml
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
Lock 接口解读 前置知识点Synchronized synchronized 是 Java 中的关键字,...
Win7 专业版安装中文包、汉... 参考资料:http://www.metsky.com/archives/350.htm...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
大模型未来趋势 大模型是人工智能领域的重要发展趋势之一,未来有着广阔的应用前景和发展空间。以下是大模型未来的趋势和展...
python实战应用讲解-【n... 目录 如何在Python中计算残余的平方和 方法1:使用其Base公式 方法2:使用statsmod...
学习u-boot 需要了解的m... 一、常用函数 1. origin 函数 origin 函数的返回值就是变量来源。使用格式如下...
常用python爬虫库介绍与简... 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库&...
药品批准文号查询|药融云-中国... 药品批文是国家食品药品监督管理局(NMPA)对药品的审评和批准的证明文件...
【2023-03-22】SRS... 【2023-03-22】SRS推流搭配FFmpeg实现目标检测 说明: 外侧测试使用SRS播放器测...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
初级算法-哈希表 主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-哈希表...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
【Docker】P3 Dock... Docker数据卷、宿主机与挂载数据卷的概念及作用挂载宿主机配置数据卷挂载操作示例一个容器挂载多个目...