npm i 安装前端项目失败(npm warn tar TAR_ENTRY_ERROR ENOENT: no such file or directory...)?

起初是正常能跑能运行的前端项目,然后就临时安装了一个包,结果没安装成功,没有进package.json 文件里。然后我就删除 node_modules 文件夹和 package-lock.json 文件,重新安装依赖:npm i 失败,报一大堆警告和错误。

$ npm i
npm warn tar TAR_ENTRY_ERROR ENOSPC: no space left on device, open 'C:\Users\13697\Desktop\testAdmin\vite-project-0818\node_modules\@babel\types\lib\converters\toSequenceExpression.js.map'
npm warn tar TAR_ENTRY_ERROR ENOSPC: no space left on device, write
npm warn tar TAR_ENTRY_ERROR ENOSPC: no space left on device, open 'C:\Users\13697\Desktop\testAdmin\vite-project-0818\node_modules\vue\jsx-runtime\index.d.ts'
npm warn tar TAR_ENTRY_ERROR ENOSPC: no space left on device, write
npm warn tar TAR_ENTRY_ERROR EBADF: bad file descriptor, write
npm warn tar TAR_ENTRY_ERROR EBADF: bad file descriptor, write
npm warn tar TAR_ENTRY_ERROR ENOSPC: no space left on device, write
npm warn tar TAR_ENTRY_ERROR ENOSPC: no space left on device, open 'C:\Users\13697\Desktop\testAdmin\vite-project-0818\node_modules\@babel\types\lib\converters\toStatement.js'

...此处省略类似警告多行

npm warn tar TAR_ENTRY_ERROR ENOENT: no such file or directory, lstat 'C:\Users\13697\Desktop\testAdmin\vite-project-0818\node_modules\echarts\types\src\chart\helper'
npm warn cleanup Failed to remove some directories [
npm warn cleanup   [
npm warn cleanup     'C:\\Users\\13697\\Desktop\\testAdmin\\vite-project-0818\\node_modules\\@vueuse',
npm warn cleanup     [Error: EPERM: operation not permitted, rmdir 'C:\Users\13697\Desktop\testAdmin\vite-project-0818\node_modules\@vueuse\shared\node_modules\vue-demi'] {
npm warn cleanup       errno: -4048,
npm warn cleanup       code: 'EPERM',
npm warn cleanup       syscall: 'rmdir',
npm warn cleanup       path: 'C:\\Users\\13697\\Desktop\\testAdmin\\vite-project-0818\\node_modules\\@vueuse\\shared\\node_modules\\vue-demi'
npm warn cleanup     }
npm warn cleanup   ],
npm warn cleanup   [
npm warn cleanup     'C:\\Users\\13697\\Desktop\\testAdmin\\vite-project-0818\\node_modules',
npm warn cleanup     [Error: EPERM: operation not permitted, rmdir 'C:\Users\13697\Desktop\testAdmin\vite-project-0818\node_modules\echarts\types'] {
npm warn cleanup       errno: -4048,
npm warn cleanup       code: 'EPERM',
npm warn cleanup       syscall: 'rmdir',
npm warn cleanup       path: 'C:\\Users\\13697\\Desktop\\testAdmin\\vite-project-0818\\node_modules\\echarts\\types'
npm warn cleanup     }
npm warn cleanup   ]
npm warn cleanup ]
npm error code EBADF
npm error EBADF: bad file descriptor, write

npm error A complete log of this run can be found in: D:\scoop_user_apps\persist\nodejs18\cache\_logs\2024-10-19T06_19_46_945Z-debug-0.log

1.尝试过删除 node_modules 文件夹和 package-lock.json 文件,重新安装依赖,也报类似错
2.尝试过切换 npm 镜像源也失败,目前还原成https://registry.npmmirror.com
3.尝试在命令行中运行 npm cache clean --force 后再重新安装依赖也报类似错
4.切换nodejs版本(18、20、22版本)和重启电脑也报类似错

阅读 1.4k
avatarAI BotBETA

解答

从错误日志来看,你遇到的问题主要涉及到两个方面:

  1. 磁盘空间不足(ENOSPC: no space left on device:这是最常见的问题之一,尤其是在处理大型前端项目时,node_modules 文件夹可能会占用大量磁盘空间。
  2. 文件描述符错误(EBADF: bad file descriptor:这通常是由于系统资源限制或文件权限问题导致的。

解决方案:

1. 检查磁盘空间

  • 首先,确保你的磁盘空间充足。你可以通过文件资源管理器或命令行(例如使用 df -h 在 Linux/Mac 或 chkdsk 加上 /F 参数在 Windows 中)来检查磁盘使用情况。
  • 清理不必要的文件和程序以释放空间。

2. 清理 node_modules 和缓存

  • 尽管你已经尝试过删除 node_modulespackage-lock.json,但请确保在删除后彻底清理 npm 缓存(你已经尝试过 npm cache clean --force,这通常是有效的)。
  • 如果可能,尝试在不同的磁盘上克隆项目或移动项目到空间更充裕的磁盘上。

3. 检查文件权限

  • 确保你有足够的权限来访问和修改项目文件。在 Windows 上,你可以尝试以管理员身份运行命令提示符或 PowerShell。
  • 检查是否有任何防病毒软件或文件访问控制软件阻止了 npm 的正常操作。

4. 考虑使用其他包管理器

  • 如果 npm 持续出现问题,你可以考虑使用其他 JavaScript 包管理器,如 yarn。Yarn 在处理依赖和缓存方面有时表现更好。

5. 检查 npm 配置文件

  • 检查你的 .npmrc 文件(通常位于用户主目录下),确保没有错误的配置导致问题。

6. 查看详细的错误日志

  • 根据错误日志中的提示,查看更详细的日志文件(如 D:\scoop_user_apps\persist\nodejs18\cache\_logs\2024-10-19T06_19_46_945Z-debug-0.log),可能会有更多关于错误原因的线索。

7. 升级 npm 和 Node.js

  • 尽管你已经尝试过不同的 Node.js 版本,但确保 npm 也是最新版本可能有助于解决问题。你可以通过运行 npm install -g npm 来升级 npm。

通过上述步骤,你应该能够诊断并解决 npm 安装时遇到的问题。如果问题仍然存在,可能需要更深入地检查系统配置或寻求社区的帮助。

1 个回答

根据思否 AI Bot 提供的建议,我发现可能就是我电脑硬盘空间不足造成的。刚打开我的电脑一看:硬盘可用空间只有26兆了,标红了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏