webpack-bundle-analyzer 子依赖版本问题
约 313 字
问题描述
一个工程发布失败,错误信息截图如下:
问题原因
通过错误栈信息,可以发现是 webpack-bundle-analyzer
的子依赖 sirv
的子依赖 @polka/url
的实现语法有问题,查看 npm 记录发现该包昨天发布了新版本。
新版本改用了>=14.8.0 版本才支持的语法node:querystring
,而我司的 node 版本为 14.17.1,所以报错。
解决办法
方法一:锁版本
在 package.json
中,将 @polka/url
锁定在 1.0.0-next.25
版本。这个方法比较通用,对 node 版本不限制。
"@polka/url": "1.0.0-next.26",
还有一种方法只对 yarn 生效,也是修改 package.json
文件:
"resolutions": {
"@polka/url": "1.0.0-next.25"
}
如果是用 npm 安装,即使在 package.json
中指定版本,也不会生效,npm 对 overrides
需要 node 在 14.8.0 以上才生效。
"overrides": {
"@polka/url": "1.0.0-next.25"
}
方法二:升级 node 版本
只要升级 node 版本 >= 14.8.0 以上,就可以解决这个问题。
方法三:npm ci 安装
如果项目使用了npm ci
,就不会出现这个问题,因为npm ci
会安装 package-lock.json
中指定的版本,而不会自动升级安装新的版本。