Node.js v12.0.0执行npm build报npm不兼容错误如何修复
问题原因
当前环境中安装的npm版本与Node.js v12.0.0存在兼容性冲突,新版本npm已不再支持Node.js 12.0.0初始版本。构建流程中内置的npm view npm time --json版本检查命令执行失败,且该子进程调用逻辑未做异常捕获,因此只会抛出UnhandledPromiseRejectionWarning警告,不会直接终止构建流程。
修复方案
方案1:升级Node.js到兼容版本(推荐)
Node.js 12.0.0是12分支的初始发布版,存在大量已知bug和兼容性问题,直接升级到12.x分支的最终维护版本即可自动解决npm兼容问题:
- 卸载当前Node.js 12.0.0,安装Node.js 12.x系列的最终LTS维护版本,安装完成后会自带适配该版本的npm,重新执行构建即可。
- 如果需要同时管理多版本Node,可使用nvm版本工具快速切换,执行命令如下:
# 安装12.x分支最新维护版 nvm install 12 # 切换到对应版本 nvm use 12
方案2:降级npm到适配Node 12.0.0的版本
如果项目有强依赖要求必须固定使用Node.js 12.0.0,可手动将npm降级到兼容的6.x大版本(npm 6是最后一个兼容Node 12初始版本的正式大版本):
# 全局安装npm 6最新版本 npm install -g npm@6
安装完成后执行npm -v确认版本号为6.x开头,再重新运行构建命令即可。
方案3:临时隐藏警告(不推荐)
如果暂时不需要处理兼容问题,仅要消除控制台警告输出,可在执行构建命令前添加Node启动参数,将未捕获Promise拒绝的行为设为仅警告不中断:
# macOS/Linux环境 NODE_OPTIONS=--unhandled-rejections=warn npm run build # Windows cmd环境 set NODE_OPTIONS=--unhandled-rejections=warn npm run build
注意:该方案仅隐藏警告提示,没有解决根本的版本兼容问题,后续执行npm安装、发布等操作时仍可能触发其他兼容性异常。
内容的提问来源于stack exchange,提问作者Beginner
相关产品推荐
相关产品推荐

