git | 关联本地仓库到远端

在Vue项目后期手动引入并配置vue-router时出现报错,报错点在vue引擎底层。经检索,问题出在main.js中,在vue实例使用对象属性简写形式加入自命名路由属性,而vue需识别固定属性名加载vue-router。解决办法是用键值对形式引入或用常规命名的对象简写形式引入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


若有疑问,欢迎评论,我会尽快回复。

问题重现

在一次vue项目初始化时并没有加入vue-router。后期手动引入并配置,结果出现了如下的报错:
在这里插入图片描述
报错点是在vue引擎底层,并不是一般配置错误的问题,Cannot read property 'matched' of undefined意味着vue-router的某关键字没有被引擎获取到,导致报错。

问题定位

经过问题检索,我发现问题出在main.js中。我在vue实例中,使用对象属性简写形式加入了自命名的路由属性,但vue需要识别固定属性名router以加载vue-router。

import Vue from 'vue'
import App from './App'
import myRouter from './router'

Vue.config.productionTip = false

new Vue({
  el: '#app',
  myRouter,  //*** 问题点  ***//
  components: { App },
  template: '<App/>'
})

问题解决

所以,如果引入路由组件时,使用自定义名称,在vue实例中声明时,应以键值对形式引入,如下

new Vue({
  el: '#app',
  router: myRouter,
  components: { App },
  template: '<App/>'
})

或者干脆别折腾,以常规的router命名的对象简写形式引入

import router from './router'
new Vue({
  el: '#app',	
  router,  
  components: { App },
  template: '<App/>'
})

问题反思

出现这个问题,主要原因是思维僵硬。模板是用简写引入,我就简写引入,根本没有考虑逻辑问题。如果属性名不固定,每个人都以不同名称将router引入实例,那么引擎怎么识别呢?
正常逻辑是 {狼人: 老王}或简写为{狼人},如果写成{老王,小张,孙笑川},这还得引擎去猜谁是狼人,不合逻辑的。

如果你对ES6的对象属性简写不了解的话,可参考对象属性与方法简写

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值