Vuejs-未捕获的 TypeError:无法重新定义属性:$router
我对 Vuejs 还比较陌生,一段时间以来我一直被以下错误困扰:(页面加载时出现)
Uncaught TypeError: Cannot redefine property: $router
at Function.defineProperty ()
at Function.install (VM2179 vue-router.esm.js:526)
at Function.Vue.use (vue.js:4738)
at eval (VM2179 vue-router.esm.js:2447)
at Object../node_modules/vue-router/dist/vue-router.esm.js (VM2105 app.js:1615)
at __webpack_require__ (VM2105 app.js:712)
at fn (VM2105 app.js:95)
at eval (VM2178 index.js:3)
at Object../src/router/index.js (VM2105 app.js:2415)
at __webpack_require__ (VM2105 app.js:712)
这个问题似乎并没有影响 webapp 的可用性,而且我很确定我没有多次声明 Vue.use(Router)……
这是我的 index.js 文件:(在 src/router 中)
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 中,主入口点)
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)
})
请帮忙! 谢谢!!
解决了!
在我的
index.html
文件中,我再次导入了
vue
:
<!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/[email protected]/dist/vue.js"></script> -->
</body>
</html>
将其注释掉就可以了!
这是由于
vue-router
中的
以下代码
所致
if (inBrowser && window.Vue) {
window.Vue.use(VueRouter);
}
实际上仅在您将文件包含在
<script>
块中(即没有构建系统)时才存在。
删除与 Vue 或相关组件相关的任何
<script>
元素;使用 Webpack 时不需要它们。
看起来你使用了 Webpack 但忘记设置
externals: {
Vue: 'vue'
}
在这种情况下,你已经在外部 CND 和 webpacks 的库中初始化了 vue 和 vue-router 两次。