首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >$router -未捕获的TypeError:无法重新定义属性: Vuejs

$router -未捕获的TypeError:无法重新定义属性: Vuejs
EN

Stack Overflow用户
提问于 2018-09-07 01:52:34
回答 4查看 11.6K关注 0票数 7

我是Vuejs的新手,现在我已经被以下错误困扰了一段时间:(在页面加载时出现)

未捕获TypeError:无法重新定义属性:$router

在Function.defineProperty ()

在Function.install (VM2179 vue-router.esm.js:526)

本文来自Function.Vue.use (vue.js:4738)

在eval (VM2179 vue-router.esm.js:2447)

本文来自Object../node_modules/vue-router/dist/vue-router.esm.js (VM2105 app.js:1615)

本文来自__webpack_require__ (VM2105 app.js:712)

在fn (VM2105 app.js:95)工作

at at eval (VM2178 index.js:3)

位于Object../src/router/index.js (VM2105 app.js:2415)

作者在__webpack_require__ (VM2105 app.js:712)

这个问题似乎不会影响…应用程序的可用性,而且我非常确定我不会不止一次声明Vue.use(路由器)…

这是我的路由器文件:(在src/ index.js中)

代码语言:javascript
复制
import Vue from 'vue'
import Router from 'vue-router'
import Blog from '../components/Blog.vue'
import BlogPost from '../components/BlogPost.vue'

Vue.use(Router)
Vue.config.silent = true

export default new Router({
  routes: [
    {
      path: '/blog',
      name: 'Blog',
      component: Blog
    },
    {
      path: '/blog/:slug',
      name: 'Blog-post',
      component: BlogPost
    }
  ]
})

app.ts:(在src中,主入口点)

代码语言:javascript
复制
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store/simple_store'
import '../assets/app.css'
import './assets/main_logo.css'
import './assets/pages/page_header_animation.css'

new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})

请帮帮我!谢谢你!!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-09-07 08:16:15

这是由于vue-router中的following code造成的

代码语言:javascript
复制
if (inBrowser && window.Vue) {
  window.Vue.use(VueRouter);
}

只有当你在<script>块中包含文件(即,没有构建系统)时才会出现这种情况。

删除任何与Vue或相关组件相关的<script>元素;在使用Webpack时不需要它们。

票数 2
EN

Stack Overflow用户

发布于 2018-09-07 08:18:22

解决了!

在我的index.html文件中,我再次导入了vue:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>Meko Deng</title>
  </head>
  <body>
    <div id="app"></div>
    <!-- <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script> -->
</body>
</html>

把它注释掉就行了!

票数 11
EN

Stack Overflow用户

发布于 2019-02-26 18:50:04

看起来你用的是Webpack,忘了布景

代码语言:javascript
复制
externals: {
  Vue: 'vue'
}

在本例中,您在外部CND和webpack的lib中初始化了两次vue和vue-router。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52209717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档