npm安装webpack时E404报错找不到@types/eslint@8.4.4包怎么办
问题原因
- 核心触发逻辑:安装流程请求
@types/eslint@8.4.4版本的tarball资源时返回404。该版本是@types/eslint维护者在2022年6月30日发布的存在类型定义错误的版本,发布后短时间内就被从npm官方注册表下架,但同期更新的webpack-dev-server传递依赖声明里临时锁定了这个已下架版本的下载地址,直接执行安装命令时就会请求不存在的资源触发报错。 - 本地npm缓存残留错误的包版本映射,会重复引导安装流程请求失效地址,放大该问题的出现概率。
- 项目内如果存在旧的
package-lock.json锁文件,且文件内硬编码了@types/eslint@8.4.4的失效下载链接,npm安装时会优先读取锁文件配置拉取资源,直接触发404错误。
解决方法
按顺序执行以下操作即可修复:
- 第一步:清除本地npm缓存,排除错误缓存的干扰
npm cache clean --force
- 第二步:删除项目内残留的旧依赖目录和锁文件
# 删除已存在的依赖安装目录 rm -rf node_modules # 删除旧版本依赖锁文件 rm -f package-lock.json
- 第三步:重新执行依赖安装,如果仍报相同404错误,可手动指定
@types/eslint使用已上架的稳定版本绕开失效版本:
npm 7及以上版本支持直接在安装时加覆盖参数:
npm 6及更早版本不支持overrides参数,可先提前安装稳定版npm install webpack webpack-cli webpack-dev-server --overrides @types/eslint@8.4.5@types/eslint再安装webpack相关依赖:npm install @types/eslint@8.4.3 --save-dev npm install webpack webpack-cli webpack-dev-server - 验证:安装完成后执行
npx webpack serve测试,服务可正常启动即代表问题修复。
补充说明:该问题属于npm生态下包版本下架引发的短暂依赖异常,2022年7月1日相关包的维护者已经更新了依赖声明移除了失效版本的锁定,后续新建项目执行安装不会再触发同类报错。
内容的提问来源于stack exchange,提问作者Barbaro Javier
相关产品推荐
相关产品推荐

