在vue3+vite项目中,我尝试将vue的版本的锁住
"vue": "3.1.4" //这里锁住了
"@vue/compiler-sfc": "^3.1.4" //但是这里忘了锁住
编译时便报了错误: Uncaught SyntaxError: The requested module '/node_modules/.vite/vue.js?v=462ca772' does not provide an export named 'createElementBlock'
最后找到问题的原因是因为,@vue/compiler-sfc的3.2版本跟vue3.1版本不兼容导致。
解决方案:
//只锁住大版本,让它跟@vue/compiler-sfc自动同步升级小版本,两个都使用^
"vue": "^3.1.4"
"@vue/compiler-sfc": "^3.1.4"
//两个都锁住小版本
"vue": "3.1.4"
"@vue/compiler-sfc": "3.1.4"
版本控制:
在lock文件可能会被删除的情况下,如果使用^或者~ 可能都会引发版本问题:
^ 只能锁住第一位数,^3.1.4,最新版本如果升级到了3.2,在没有lock文件的情况下,会自动下载3.2版本的,只会下载最新,不会往低版本下载
~ 锁住前两位,原理同上
版本锁定方案:
package.json
中固定版本npm
+package-lock.json
yarn
+yarn-lock.json
yarn
的yarn.lock
和npm
的package-lock.json
对“锁定依赖版本”表现不同,package-lock.json 的“锁定效果”更可靠。当市场有比yarn.lock
中更新的版本,且package.json
中存在 ^ ~ 允许更新,那么yarn
会自动安装比yarn.lock
更新的版本并且主动修改yarn.lock
,而npm
的package-lock.json
则不会。
注意:cnpm不支持版本锁定,也就是package-lock.json这些文件对它无效
[nvm 管理 npm 模块参考](使用nvm管理node版本 - 掘金 (juejin.cn))