在运行一个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下安装及使用NVM

反思:对于Windows用户来说,就不能换个Mac吗。(没办法,这是公司给的)

第四次尝试:

根据导师的指示,把node给卸了,然后重新安装node。这里提供一下node淘宝镜像,各个版本各种安装方式都有提供。

node淘宝镜像

我一开始没经验,下载了zip,结果解压之后发现已经都安装好了,那啥,还得配置环境变量。我按照网上的教程配置,结果没有生效。好累啊,上百度查查,结果告诉我应该下载的是msi安装包,会自动配置环境变量。行吧,那就再下载msi,接着就是傻瓜式安装。一切搞定之后,我进入项目目录,输入npm run dev,项目终于成功运行了。

总结

  1. 如果项目在同事这里都能运行而在你这里无法运行,又提示babel报错的,需要考虑一下你的node版本和babel版本是否兼容
  2. 除非你用的是Mac,否则不要轻易使用n模块和NVM模块
  3. 这个网址值得收藏 node淘宝镜像
  4. 建议下载msi,会自动配置环境变量
Logo

前往低代码交流专区

更多推荐