前端框架 vue3.1/element-ui
编译工具 npm/cnpm/pnpm
本人主业后端但也会做前端开发,昨天删除 node modules 后重新 install ,结果就出问题了,加载后发现报错
“export ‘createElementBlock‘ (imported as ‘_createElementBlock‘) was not found in ‘vue‘
google 了下发现都建议升级 vue 版本,于是升级到了 3.2 ,dev 调试下发现没什么大问题直接推了更新,由于担心远程缓存便把编译服务器 node modules 也清空,结果发布之后才发现出错,大体如下
vendor.3155b104.js:5 ReferenceError: tagsDialog is not defined
at Proxy.<anonymous> (index.vue_vue_type_style_index_0_lang.921681d1.js:73:19169)
at Xm (vendor.3155b104.js:5:4389)
跟同事讨论后怀疑可能是 <componentname ref="tagsDialog" > 这里的 tagsDialog 没定义新版 vue 不兼容导致的,解决方案是 const taggingDialog = ref();定义下。
我开始以为就几个变量,于是改改改。。。结果越改越多,这样改下去不知道啥时候能改完,生产环境版本也出问题同事催着急用,于是想着能不能降低 vue 版本试试先把生产环境编译出来用着,手动解决 createElementBlock, 于是在 node_modules/.vite/里复制了一大堆新版本的方法过来,最后还是放弃了,因为依赖太多,手动兼容太费时间了。
于是情况就变成了,线上线下都无法编译出可用版本,dev 调试却没事,同事急着用。。。我都打算先本地跑个 dev 版本反代到生产环境先撑着再来修改,不过还好后面发现备份服务器上还有个备份,才暂时先跑起了。
感觉最近几年前端开发确实越来越便捷,但是依赖始终是个大问题,我同事更加精通前端开发几乎媲美比较专业的前端开发工程师了,但是之前打包 electron 也遇到更新后再也无法编译的问题,后面分析可能是某个组件的依赖更新了导致另一个依赖出了问题。相比起以前简陋的 jq ,虽然现在的眼光看起来很 low ,但很少遇到这样的问题,一个大项目点击即可运行,真正做到了所开发即所得,而现在我 dev 和编译的居然都不一样。。。
感觉今天的问题可能是我自己的项目 a ,依赖了组件 b ,我当然可以强行指定 b 的特定版本,但 b 也可能依赖了 c 而且 c 没限定版本的话。。。谁敢保证更新后不出问题呢?更何况 c 还有可能依赖 d 。。。
回归正题,我不想升级 vue 版本的话,有没有办法强行限定所有依赖的版本进行依赖安装?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.