Vue项目从仓库克隆到本地运行提示编译失败 - 记一次踩坑经历
在运行一个vue项目的时候,一直提示编译失败Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No “exports” main resolved in@babel/helper-compilation-targets/package.json我的项目是从仓库克隆到本地的,配置根本没动过,但是在同事那边是可以跑的。SolutionThis is a regression
在运行一个vue项目的时候,一直提示编译失败
Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No “exports” main resolved in@babel/helper-compilation-targets/package.json
我的项目是从仓库克隆到本地的,也都拉取了依赖,配置根本没动过,但是在同事那边是可以跑的。同事怀疑是我的node_modules有问题,他让我把node_modules删了,然后用他给我的node_modules。
第一次尝试:更换node_modules
有人将node_modules比作黑洞,我现在觉得一点都不过分。删除node_modules才发现这玩意儿好大,等了大概20多分钟,本以为已经删除完成了,结果一看,删除失败。。。再次尝试删除,还是不行。。。怎么办,我想到VS Code里也可以删除文件,那就在VS Code里删除,结果VS Code直接没有响应。。。好在VS Code最后还是把文件给删了。下一步,从公司的公共盘拷贝node_modules至项目目录,同样也等了很长时间。终于完成了,好激动,那就npm run dev,结果还是提示编译失败,报一样的错误。
反思:既然执行了npm install重新拉取依赖还是没用,那就说明问题不在node_modules,更换node_modules根本不可能解决问题。
既然同事的方案不管用,那就自己上百度查下。找了很久,终于在stackoverflow中找到了一个潜在方案:
Solution
This is a regression in Node.js. If you hit this issue from search engines, please choose one of the following solutions
update @babel deps to v7.8.7
use Node < 13.9
wait until nodejs/node#32107 is fixed! (Probably in the next Node.js patch release).
这也就是说,是因为node版本的问题,新版本的node无法兼容老版本的babel。解决方法也很简单,要么将babel升级到v7.8.7以上,或者将node降到13.9以下。我看了下,我安装的node是v14.4.0版本的,而package.json中的babel版本为v7.8.6,我同事的node版本是10点几的,确实存在这种可能性。我跟同事交流了一下,他让我尽量在本地改,不要修改项目。行吧,那就只能降node了。
需要怎么降node呢?我以前有过切换Python版本的经历,很自然地想到使用某种版本管理工具。我查了一下还真有,n模块和NVM模块。
第二次尝试:使用n模块切换node版本
网上查了下教程,那就开始吧。结果安装n模块的时候报错了,说平台不兼容(platform is not supported)。结果上网搜了下,说这个模块只支持Linux和MacOS,好吧公司的电脑是win 10。我还是不死心,我采用强制安装 npm i n -g --force
,安装完之后去命令行中输入n,结果还是提示没有这个命令,说明这条路走不通。
反思:对于Windows用户来说,安装模块前应该看一看是否兼容自己的系统。
第三次尝试:使用NVM模块切换node版本
还好有Plan B,那就试试NVM模块吧。NVM的全称是node version manager,node版本管理工具。这个模块原来也只能用在Linux和MacOS平台上,但是网上很多教程都表示现在NVM已经支持Windows了,那简直太棒了。根据网上的教程下载了NVM,然后用NVM下载了node v13.8.0,并且将该版本作为当前使用的node版本。为了检验是否成功,我打开命令行,输入 node -v
,正常返回node版本号,但是当我输入 npm -v
时,却提示没有这个命令。有毒吧,就算node降级了,但是没有npm项目根本跑不了啊。百度上查了半天也没搞清楚,跟导师交流了一下,导师让我不要用NVM,直接把node卸了重装。好吧那就只能这样了。这里提供一下NVM的教程,我个人觉得还挺不错,就是没用上。
反思:对于Windows用户来说,就不能换个Mac吗。(没办法,这是公司给的)
第四次尝试:
根据导师的指示,把node给卸了,然后重新安装node。这里提供一下node淘宝镜像,各个版本各种安装方式都有提供。
我一开始没经验,下载了zip,结果解压之后发现已经都安装好了,那啥,还得配置环境变量。我按照网上的教程配置,结果没有生效。好累啊,上百度查查,结果告诉我应该下载的是msi安装包,会自动配置环境变量。行吧,那就再下载msi,接着就是傻瓜式安装。一切搞定之后,我进入项目目录,输入npm run dev,项目终于成功运行了。
总结
- 如果项目在同事这里都能运行而在你这里无法运行,又提示babel报错的,需要考虑一下你的node版本和babel版本是否兼容
- 除非你用的是Mac,否则不要轻易使用n模块和NVM模块
- 这个网址值得收藏 node淘宝镜像
- 建议下载msi,会自动配置环境变量
更多推荐
所有评论(0)