Claude Code 自动升级失败后的手动重装指南
> 一次 npm 半途夭折留下的临时目录,让终端里的 claude 直接罢工。
> 本文记录根因、临时目录的来历,以及一条能稳定复现的修复路径。
一、现象
某个早上打开终端,习惯性敲下 claude,等来的不是欢迎界面,而是一段报错:
module not found
或者更直接一点:
claude: command not found
但 which claude、npm ls -g 又都能看到它"装在那儿"。也就是说:包目录存在,但内容不完整——典型的"升级升到一半被打断"。
二、根因
Claude Code 通过 npm install -g @anthropic-ai/claude-code 安装,并且默认开启了自动更新。自动更新本质上就是在后台跑一次全局 npm install:
- 把新版包下载到一个临时目录(形如
@anthropic-ai/.claude-code-XXXXXXXX,后缀是随机串); - 解包、校验;
- 用临时目录原子替换掉正式的
@anthropic-ai/claude-code。
问题出在第 3 步之前被打断——网络抖动、npm 缓存损坏、磁盘写满、进程被杀、终端被关。
此时磁盘上会残留两种"半成品":
| 残留物 | 说明 |
|---|---|
@anthropic-ai/.claude-code-<随机串> |
升级用的临时目录,是个"点开头"的隐藏目录 |
@anthropic-ai/claude-code |
正式目录,可能已被清空或只写了一半 |
之后无论你是手动 npm install -g 还是等它自己再更新,npm 都会看到"目录已存在"而直接跳过或报错,于是一直卡在坏状态。不清掉这两个目录,任何重装都是白费。
三、手动重装步骤
以下命令按顺序执行即可。以 Node v22.22.3 + nvm 为例。
1. 清空 npm 缓存
缓存里可能存着上次下载失败的坏 tarball,先强制清掉:
npm cache clean --force
2. 删掉两个残留目录
rm -rf /home/huamingh/.nvm/versions/node/v22.22.3/lib/node_modules/@anthropic-ai/.claude-code-sIPnA3NY
rm -rf /home/huamingh/.nvm/versions/node/v22.22.3/lib/node_modules/@anthropic-ai/claude-code
> 注意:第一行的随机后缀(这里是 sIPnA3NY)每次都不一样,要用 ls -a 看一下自己机器上实际残留的名字:
>
>
> ls -a /home/huamingh/.nvm/versions/node/v22.22.3/lib/node_modules/@anthropic-ai/
>
>
> 目录里所有
.claude-code-* 的点目录都可以放心删。
3. 确认 Node 环境
node -v
npm config get registry
node -v 用来核对上面的路径版本号对不对;npm config get registry 用来确认当前 registry——这一步很关键,下面会讲。
4. 走国内镜像重新安装
npm install -g @anthropic-ai/claude-code --registry=https://registry.npmmirror.com
5. 验证
claude --version
能打印出版本号,说明装好了;再敲一次 claude 进入交互界面确认。
四、为什么要显式指定 npmmirror
这是整篇里最容易被忽略的一点。
registry.npmjs.org 在国内网络下经常出现大包下载中断——而"下载中断"恰好就是本文第一节那个残留临时目录的最主要成因。显式加上:
--registry=https://registry.npmmirror.com
走阿里云镜像,下载稳定得多,一次成功的概率大幅提高。
如果这台机器长期在国内用,建议直接固化下来,省得每次手敲:
npm config set registry https://registry.npmmirror.com
五、一页速查
发生"升级完 claude 跑不起来"时,直接按这段抄:
npm cache clean --force
ls -a /home/huamingh/.nvm/versions/node/v22.22.3/lib/node_modules/@anthropic-ai/
# 按实际输出删掉 .claude-code-<随机串> 和 claude-code
rm -rf /home/huamingh/.nvm/versions/node/v22.22.3/lib/node_modules/@anthropic-ai/.claude-code-*
rm -rf /home/huamingh/.nvm/versions/node/v22.22.3/lib/node_modules/@anthropic-ai/claude-code
node -v
npm config get registry
npm install -g @anthropic-ai/claude-code --registry=https://registry.npmmirror.com
claude --version
六、小结
- 症状:
claude命令存在但跑不起来,多半是包目录被写坏了。 - 根因:自动升级是一次
npm install -g,中途被打断就会留下.claude-code-<随机串>临时目录和半个正式目录。 - 关键:必须先删干净这两个目录,否则后续任何重装都会被 npm 跳过或拒绝。
- 预防:把 registry 指到
registry.npmmirror.com,减少下载中断的概率。
顺便说一句,nvm 切换 Node 版本后,claude 也需要在新版本下重新装一次——路径里的 v22.22.3 就是版本隔离的直接体现。