升级Node14后npm ci报fork-ts-checker-webpack-plugin-v5无法访问怎么办
错误产生原因
- 升级node镜像到node:14-alpine时,内置npm版本同步升级到v7及以上,该版本的依赖校验逻辑和node:10-alpine内置的npm v6存在较大差异
- 你使用npm v6生成的package-lock.json中,@vue/cli-plugin-typescript的
requires字段错误将可选依赖fork-ts-checker-webpack-plugin-v5标记为必填项 - npm v7执行
npm ci时会严格校验requires字段声明的所有依赖是否存在:你添加的--no-optional参数会跳过安装可选依赖,自然会触发依赖缺失报错
可行修复方案
- 方案1:升级
@vue/cli-plugin-typescript到4.x最新稳定版(4.5.19及以上),官方已修复该可选依赖的声明问题,升级后重新生成package-lock.json再执行构建即可 - 方案2:在项目package.json的devDependencies中手动显式声明依赖:
"fork-ts-checker-webpack-plugin-v5": "npm:fork-ts-checker-webpack-plugin@^5.0.11"
声明后重新执行npm install生成新的lock文件,后续执行npm ci不会再报错
- 方案3:去掉
--no-optional参数,直接执行npm ci,允许安装该可选依赖,该包体积很小,对构建效率无明显影响 - 方案4:在node:14-alpine镜像中降级npm到v6版本,执行构建前先运行
npm install -g npm@6,沿用旧版npm的依赖解析逻辑即可兼容原有lock文件
内容的提问来源于stack exchange,提问作者Phillipp
相关产品推荐
相关产品推荐

