跳转至

NPM 全局安装 ENOTEMPTY 错误恢复报告

1. 错误背景

  • 触发命令:npm install -g <多个包名>
  • 错误代码:ENOTEMPTY
  • 错误场景:由于用户在安装过程中强行中止(Ctrl+C),导致安装状态不一致。

2. 问题分析

npm 在执行安装时会先在临时位置解压,随后尝试将旧版本目录重命名/替换为新版本。若上一次操作被中断,目标路径下可能残留文件,导致 rename 系统调用失败并抛出 ENOTEMPTY: directory not empty。

3. 解决方案(标准化步骤)

第一步:验证 npm 缓存

清理并验证本地缓存,确保后续下载不受旧缓存干扰。

npm cache verify

第二步:识别并清理受损目录

根据报错信息提供的路径,手动删除受损的包目录。

# 示例:清理特定的全局包目录
rm -rf ~/.npm-global/lib/node_modules/@anthropic-ai/claude-code
# 或者根据需要清理多个
rm -rf ~/.npm-global/lib/node_modules/<package-name>

第三步:分步重新安装

避免一次性安装过多包,分步执行以确保稳定性并易于排查。

npm install -g <package-name-1>
npm install -g <package-name-2>

第四步:最终验证

确认包已正确安装到全局列表。

npm list -g --depth=0

4. 预防建议

  • 尽量避免在 npm 写入磁盘阶段强行中止任务。
  • 若必须中止,建议在下次运行前先手动检查对应包的目录状态。