npm安装包失败:下载eslint相关依赖触发TAR_BAD_ARCHIVE错误
npm安装ESLint相关依赖触发TAR_BAD_ARCHIVE错误
问题描述
npm无法安装任何依赖,只要涉及eslint相关包,就会触发TAR_BAD_ARCHIVE错误,提示无法识别归档格式。
已尝试的无效操作
- 清理npm缓存
- 执行
npm audit verify、npm audit fix、npm audit fix --force - 卸载并重新安装npm(多种方式尝试)
- 尝试禁用ESLint,但React初始化脚本默认包含它
- 尝试升级ESLint版本,安装时仍出现相同错误
错误日志
执行npm install、npm init @eslint/config@latest等命令时,日志报错片段如下:
片段1
7097 http fetch GET 304 https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz 864ms (cache skip) 7098 warn tar TAR_BAD_ARCHIVE: Unrecognized archive format 7099 silly tar Error: TAR_BAD_ARCHIVE: Unrecognized archive format 7099 silly tar at Unpack.warn (/usr/local/lib/node_modules/npm/node_modules/tar/lib/warn-mixin.js:21:40) 7099 silly tar at Unpack.warn (/usr/local/lib/node_modules/npm/node_modules/tar/lib/unpack.js:236:18) 7099 silly tar at Unpack.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/tar/lib/parse.js:83:14) 7099 silly tar at Unpack.emit (node:events:530:35) 7099 silly tar at [emit] (/usr/local/lib/node_modules/npm/node_modules/tar/lib/parse.js:313:12) 7099 silly tar at [maybeEnd] (/usr/local/lib/node_modules/npm/node_modules/tar/lib/parse.js:468:17) 7099 silly tar at [consumeChunk] (/usr/local/lib/node_modules/npm/node_modules/tar/lib/parse.js:476:21) 7099 silly tar at Unpack.write (/usr/local/lib/node_modules/npm/node_modules/tar/lib/parse.js:427:25) 7099 silly tar at Unpack.end (/usr/local/lib/node_modules/npm/node_modules/tar/lib/parse.js:548:14) 7099 silly tar at Pipe.end (/usr/local/lib/node_modules/npm/node_modules/minipass/dist/commonjs/index.js:116:23) { 7099 silly tar recoverable: false, 7099 silly tar cwd: '/Users/gevorg.sargsyan/Projects/dev/js/fireship-memento/node_modules/fast-deep-equal', 7099 silly tar code: 'TAR_BAD_ARCHIVE', 7099 silly tar tarCode: 'TAR_BAD_ARCHIVE' 7099 silly tar }
片段2
7146 silly packumentCache corgi:https://registry.npmjs.org/@svgr%2fwebpack cache-miss 7147 http fetch GET 200 https://registry.npmjs.org/@svgr%2fwebpack 68ms (cache hit) 7148 silly packumentCache corgi:https://registry.npmjs.org/@svgr%2fwebpack set size:85201 disposed:false 7149 warn deprecated workbox-core@6.6.1: this package has been deprecated 7150 warn deprecated workbox-core@6.6.1: this package has been deprecated 7151 warn deprecated workbox-core@6.6.1: this package has been deprecated 7152 warn deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options. 7153 verbose stack Error: TAR_BAD_ARCHIVE: Unrecognized archive format 7153 verbose stack at Unpack.warn (/usr/local/lib/node_modules/npm/node_modules/tar/lib/warn-mixin.js:21:40) 7153 verbose stack at Unpack.warn (/usr/local/lib/node_modules/npm/node_modules/tar/lib/unpack.js:236:18) 7153 verbose stack at Unpack.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/tar/lib/parse.js:83:14) 7153 verbose stack at Unpack.emit (node:events:530:35) 7153 verbose stack at [emit] (/usr/local/lib/node_modules/npm/node_modules/tar/lib/parse.js:313:12) 7153 verbose stack at [maybeEnd] (/usr/local/lib/node_modules/npm/node_modules/tar/lib/parse.js:468:17) 7153 verbose stack at [consumeChunk] (/usr/local/lib/node_modules/npm/node_modules/tar/lib/parse.js:476:21) 7153 verbose stack at Unpack.write (/usr/local/lib/node_modules/npm/node_modules/tar/lib/parse.js:427:25) 7153 verbose stack at Unpack.end (/usr/local/lib/node_modules/npm/node_modules/tar/lib/parse.js:548:14) 7153 verbose stack at Pipe.end (/usr/local/lib/node_modules/npm/node_modules/minipass/dist/commonjs/index.js:116:23) 7154 error code TAR_BAD_ARCHIVE 7155 error TAR_BAD_ARCHIVE: Unrecognized archive format 7156 silly unfinished npm timer reify 1730736384828 7157 silly unfinished npm timer reify:unpack 1730736388377 7158 silly unfinished npm timer reifyNode:node_modules/fast-deep-equal 1730736388382
解决方案
1. 彻底清理本地缓存与项目残留文件
- 删除全局npm缓存(Mac/Linux):
Windows系统执行:rm -rf ~/.npmrd /s /q %USERPROFILE%\.npm - 清理项目目录:
删除项目下的node_modules文件夹和package-lock.json文件:
Windows系统执行:rm -rf node_modules package-lock.jsonrd /s /q node_modules && del package-lock.json
2. 强制绕过缓存重新安装
执行安装命令时添加--no-cache参数,避免读取损坏的缓存文件:
npm install --no-cache # 或初始化ESLint配置时 npm init @eslint/config@latest --no-cache
3. 更换npm镜像源
部分网络环境下,官方源下载的包可能损坏,切换到国内镜像尝试:
npm config set registry https://registry.npmmirror.com
完成后重新执行安装命令。
4. 更新npm到最新版本
旧版npm内置的tar模块可能存在bug,升级npm解决:
npm install -g npm@latest
5. 手动验证并替换损坏的包
从日志看,fast-deep-equal-3.1.3.tgz包解压失败,可手动下载该包并替换到缓存目录:
- 手动下载包文件
- 找到npm缓存中该包的存储路径(通常在
~/.npm/_cacache下),替换为手动下载的正常文件 - 重新执行安装命令
内容的提问来源于stack exchange,提问作者gsario
相关产品推荐
相关产品推荐

