1.问题
利用vue cli 新建vue2项目,安装vue-router后浏览器控制台报错:
Uncaught TypeError: Object(…) is not a function
终端这边爆
warning in ./node_modules/vue-router/dist/vue-router.esm-bundler.js "export ‘watchEffect’ was not found in 'vue’
新创建的vue2项目除了vue-router什么也没安装
看 vue-router.esm-bundler.js在提示我们这个报错与vue-router
有关
2.问题所在和解决
- 创建的是vue2项目
确定是vue-router的问题后,想了半天原来是安装vue-router时没有指定版本
,然后npm自动下的是最新版,去package.json 一看果然:
"dependencies": {
"core-js": "^3.6.5",
"vue": "^2.6.11",
"vue-router": "^4.0.12"
},
问题是:vue-router版本太高和vue2起冲突了,虽然router4.X的大部分的 Vue Router API 都没有变化,但vue-router 4.x 只能结合 vue3 进行使用,vue-router 3.x 只能结合 vue2 进行使用~(网上查的说法,我翻了下router官方文档没找到这样的
解决也很简单:卸载4版本的router,@指定版本装3.x的vue-router即可,我按自己的习惯安装3.5.2的vue-router亲测可用~
命令如下
- npm uninstall vue-router
- npm i vue-router@3.5.2