1. 先把这件事说清楚:Claude Code 到底是个什么东西
Claude Code 是 Anthropic 推出的一个命令行 AI 编程助手,跑在终端里,能直接读写你本地的项目文件、执行命令、跑测试、改代码。它跟网页版聊天最大的区别在于:它不是一个"你问我答"的对话框,而是一个能真正动手操作你工程目录的智能体。你在终端里敲一句"帮我把这个接口的错误处理补全",它会自己去翻文件、定位函数、改代码、跑一遍验证,然后把结果告诉你。
国内开发者想用上它,卡点通常不在工具本身,而在两件事:一是 Node.js 运行环境,二是网络与鉴权配置。这篇文章就是把这几个环节从头到尾捋一遍,包括我实际踩过的坑。适合两类人看:一类是刚听说 Claude Code、想在自己电脑上跑起来的新手;另一类是已经装了但一直报错、卡在鉴权或网络环节的人。
先说结论:整个链路是Node.js 环境 → 安装 CLI → 配置鉴权与接入地址 → 在项目目录里启动 → 按需接入编辑器。听起来简单,但每一步都有细节,尤其是环境变量那一块,配错了会直接导致启动失败或者请求发不出去。
我用的环境是 macOS,但 Windows 和 Linux 的步骤大同小异,差异点我会单独标出来。下面按顺序来。
2. 环境准备:Node.js 装不对,后面全是白费
2.1 为什么 Claude Code 强依赖 Node.js
Claude Code 的 CLI 是用 Node.js 写的,通过 npm 分发。这意味着你机器上必须有一个能正常工作的 Node.js 运行时,而且版本不能太老。官方要求 Node.js 18 及以上,我实测下来建议直接上 20 LTS 或者 22 LTS,因为 18 虽然能跑,但部分依赖包在新版本上表现更稳。
这里有个很多人忽略的点:Node.js 版本太低会报出各种奇怪的模块导出错误,比如The requested module 'node:util' does not provide an export named ...这类报错,本质上就是运行时版本和依赖不匹配。所以别图省事用系统自带的老版本,老老实实装一个新的。
2.2 三种安装方式,我推荐哪一种
装 Node.js 常见有三条路,我列个表对比一下:
| 安装方式 | 优点 | 缺点 | 适合谁 |
|---|---|---|---|
| 官网下载安装包 | 图形化,简单直接 | 版本切换麻烦,全局只有一个 | 完全新手,只装一次 |
| nvm 版本管理 | 可多版本共存,切换方便 | 需要命令行操作 | 有多项目需求的开发者 |
| 包管理器(brew/apt) | 一条命令搞定 | 版本可能滞后 | 熟悉命令行的用户 |
我的建议是:如果你以后可能同时维护多个项目、需要不同 Node 版本,直接上 nvm。如果只是想让 Claude Code 跑起来,官网下载安装包最省心。
macOS 用 nvm 的话,流程是这样:
# 安装 nvm(通过官方脚本) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 重新加载 shell 配置 source ~/.zshrc # 如果你用 bash 就是 ~/.bashrc # 安装并切换到 Node 20 LTS nvm install 20 nvm use 20 nvm alias default 20Windows 用户如果不想折腾 nvm,直接去 Node.js 官网下载 LTS 版本的.msi安装包,一路下一步就行。安装时记得勾选"Add to PATH",否则命令行里找不到node和npm。
2.3 验证安装是否成功
装完之后别急着往下走,先验证:
node -v npm -v正常应该输出类似v20.11.0和10.2.4这样的版本号。如果提示"command not found",说明 PATH 没配好,Windows 重启一下终端,macOS/Linux 检查 shell 配置文件里有没有加载 nvm。
提示:如果你之前装过旧版本 Node,装完新的之后一定要确认
node -v显示的是新版本。有时候旧版本还在 PATH 前面,会导致你以为装好了其实用的还是老的。
这一步看起来啰嗦,但我见过太多人跳过验证,结果后面装 CLI 时报一堆莫名其妙的错,回头排查半天才发现是 Node 版本问题。
3. 安装 Claude Code CLI:npm 全局安装的正确姿势
3.1 一条命令完成安装
Node.js 就绪之后,安装 Claude Code 本身很简单:
npm install -g @anthropic-ai/claude-code-g表示全局安装,这样你在任何目录下都能直接敲claude命令。安装过程会拉取依赖包,网速正常的话一两分钟搞定。
装完之后验证:
claude --version能输出版本号就说明 CLI 装好了。如果报"command not found",大概率是 npm 的全局 bin 目录没在 PATH 里。可以用npm config get prefix看一下全局安装路径,然后把这个路径下的bin目录加到 PATH。
3.2 权限问题:macOS/Linux 上的常见拦路虎
在 macOS 或 Linux 上,全局安装有时会因为权限不足报EACCES错误。这时候有两个选择:
一是用sudo强行装,但我不推荐,因为 sudo 装的包后续升级、卸载都容易出权限问题。二是把 npm 的全局目录改到用户目录下:
mkdir -p ~/.npm-global npm config set prefix '~/.npm-global' # 然后把 ~/.npm-global/bin 加到 PATH export PATH=~/.npm-global/bin:$PATH把最后这行写进~/.zshrc或~/.bashrc,以后就不会再有权限问题了。这个坑我踩过,sudo 装完之后某次升级又报错,折腾半天,最后还是改回用户目录最干净。
3.3 卸载与重装
如果装坏了想重来:
npm uninstall -g @anthropic-ai/claude-code然后重新装。有时候升级出问题,卸载重装比修配置快得多。另外注意,如果你之前装过别的 AI CLI 工具(比如某些同类命令行助手),它们可能会在 PATH 或配置上产生冲突,遇到诡异问题时可以先排查一下。
4. 核心环节:鉴权与接入地址配置
4.1 两个关键环境变量
这是整篇文章最关键的部分。Claude Code 要能发请求,需要两个东西:一个是身份凭证,一个是请求发往的地址。对应两个环境变量:
ANTHROPIC_AUTH_TOKEN:你的鉴权令牌ANTHROPIC_BASE_URL:请求的接入地址
为什么需要ANTHROPIC_BASE_URL?因为默认情况下 CLI 会往官方地址发请求,而国内网络环境下直连往往不通或者不稳定。通过设置这个变量,可以把请求指向一个可用的接入端点。这是国内用户能跑通的核心。
配置方式是在 shell 配置文件里加:
export ANTHROPIC_BASE_URL="你的接入地址" export ANTHROPIC_AUTH_TOKEN="你的令牌"加完source一下让配置生效,或者重开终端。
4.2 一个高频报错:两个变量同时设置
有个报错很多人会遇到:
both ANTHROPIC_AUTH_TOKEN and ANTHROPIC_API_KEY set — auth may not work as expected意思是ANTHROPIC_AUTH_TOKEN和ANTHROPIC_API_KEY两个变量同时存在,CLI 不知道该用哪个。解决办法很简单:只保留一个。检查你的环境变量:
env | grep ANTHROPIC如果两个都在,把不需要的那个 unset 掉,或者从配置文件里删掉。我建议统一用ANTHROPIC_AUTH_TOKEN,因为这是 CLI 更常用的那个。
注意:这个报错有时候不会直接让程序崩溃,而是导致鉴权行为不符合预期,比如请求发出去了但一直返回鉴权失败。所以看到这个警告别忽略,一定要处理掉。
4.3 配置的持久化与隔离
环境变量写在 shell 配置文件里是全局生效的。如果你有多个项目、想用不同的配置,可以借助项目级的.env文件或者启动脚本。不过对大多数人来说,全局配一次就够了。
另外提醒一句:令牌属于敏感信息,别把它提交到 Git 仓库里。如果你把配置写进了某个会被版本控制的文件,记得加进.gitignore。
4.4 验证配置是否生效
配完之后,进一个项目目录,敲:
claude如果能看到交互界面、能正常对话,说明配置通了。如果报鉴权错误,回头检查令牌和地址;如果报网络超时,检查接入地址是否可达。
5. 在项目里真正用起来:从启动到干活
5.1 启动与首次交互
在项目根目录下直接敲claude就会启动。第一次启动它会让你确认一些东西,比如是否信任当前目录。确认之后进入交互界面,你就可以用自然语言下指令了。
我常用的几个场景:
- "看一下 src 目录下的结构,告诉我这个项目是干什么的"
- "把 utils.js 里那个日期格式化函数改成支持时区"
- "跑一下测试,看看有没有失败的"
它会自己去读文件、执行命令,然后把结果反馈给你。这种"能动手"的能力是它和普通聊天工具最大的区别。
5.2 给完全访问权限的取舍
Claude Code 在执行某些操作(比如写文件、跑命令)时会请求确认。如果你嫌每次确认麻烦,可以开启更宽松的权限模式。但这里要提醒:给完全访问权限意味着它可以在你机器上执行任意命令,包括删除文件。所以:
- 在受信任的项目目录里用,别在系统根目录或者重要数据目录里开
- 重要项目先做好版本控制(Git),出问题能回滚
- 不确定的指令先让它解释清楚再执行
我个人的习惯是:日常开发开着确认模式,批量重构或者跑测试的时候临时放宽权限,干完再收回来。
5.3 接入编辑器:VS Code 里的用法
很多人希望在 VS Code 里直接用 Claude Code,而不是切到终端。做法是在 VS Code 的集成终端里运行claude,这样它和你的编辑器共享同一个工作目录,改完代码直接在编辑器里看到变化。
如果你想要更深的集成,可以关注一些社区做的 VS Code 扩展,把 CLI 的能力包装进编辑器面板。不过核心还是那个 CLI,扩展只是外壳。配置的时候注意扩展读取的环境变量要和终端里一致,否则会出现"终端能用、扩展不能用"的情况。
5.4 和其他 CLI 工具的共存
现在命令行 AI 工具不少,比如 Codex CLI、各种同类助手。它们可能都会往 PATH 里塞命令、都会读环境变量。如果你同时装了好几个,注意:
- 命令名不要冲突(一般不会,各自有各自的名字)
- 环境变量可能互相干扰,尤其是鉴权相关的
- 配置文件路径可能重叠
遇到"昨天还能用今天就不行了"的情况,先想想是不是装了新工具改了环境。
6. 常见问题与排查速查表
6.1 启动类问题
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
claude: command not found | 全局 bin 不在 PATH | 检查 npm prefix,加入 PATH |
| 启动即崩溃 | Node 版本过低 | 升级到 20 LTS 以上 |
| 模块导出报错 | Node 与依赖不匹配 | 换 Node 版本,重装 CLI |
| 提示找不到 CLI 二进制 | 安装不完整 | 卸载后重装 |
6.2 鉴权与网络类问题
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 鉴权失败 | 令牌错误或过期 | 重新获取并更新 |
| 两个变量冲突警告 | AUTH_TOKEN 和 API_KEY 同时存在 | 只保留一个 |
| 请求超时 | 接入地址不可达 | 检查地址配置 |
| 间歇性失败 | 网络不稳定 | 重试,检查接入端点 |
6.3 使用类问题
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 改文件没生效 | 权限模式限制 | 检查确认设置 |
| 读不到项目文件 | 启动目录不对 | 在项目根目录启动 |
| 执行命令被拒 | 权限不足 | 调整权限模式 |
6.4 我踩过的几个坑
第一个坑是环境变量没持久化。我在当前终端export了变量,测试通过,结果重开终端就失效了。后来才想起来要写进 shell 配置文件。这个错误很隐蔽,因为当下测试是好的。
第二个坑是 Node 版本。我一开始用系统自带的 Node 16,装 CLI 时各种报错,换成 20 之后一次通过。所以别省这一步。
第三个坑是令牌泄露风险。有次我把配置写进了一个会被提交的文件,幸好发现得早。现在我的做法是敏感配置单独放,绝不进版本库。
第四个坑是权限开太大。有次图省事开了完全访问,结果它执行了一个我没仔细看的命令,删掉了一个临时文件。虽然不致命,但提醒我权限要收着用。
7. 一些让体验更顺的实操心得
7.1 项目结构清晰,它干活更准
Claude Code 靠读文件来理解项目。如果你的目录结构混乱、文件命名随意,它定位代码的效率会下降。反过来,结构清晰、有 README 的项目,它上手特别快。所以花点时间整理项目结构,不只是给人看,也是给 AI 看。
7.2 指令要具体
"帮我优化一下代码"这种指令太模糊,它只能猜。更好的说法是"把api/user.js里的getUser函数加上错误处理和超时重试"。越具体,结果越接近你要的。
7.3 善用它的"解释"能力
不确定一段代码干什么的时候,直接问它。它会读代码然后用人话解释。这个功能在接手老项目时特别好用,比你自己一行行啃快得多。
7.4 版本控制是安全网
用 AI 改代码之前,先 commit 一下。这样万一改坏了,git checkout就能回滚。我现在的习惯是:让 AI 动手前先提交,改完 review 一遍再决定要不要保留。
7.5 关注更新
CLI 工具迭代很快,新版本可能修了 bug、加了功能。定期npm update -g @anthropic-ai/claude-code一下,能省不少事。但升级前最好看一眼更新说明,避免不兼容的改动打乱工作流。
8. 关于接入地址和令牌的补充说明
前面反复提到ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN,这里再补充几点实操细节。
接入地址的格式通常是完整的 URL,配置时注意不要有多余的空格或换行,否则会导致请求发不出去。令牌一般是一串较长的字符串,复制的时候注意别漏字符。配置完之后,最直接的验证方式就是启动 CLI 发一条消息,看能不能正常返回。
如果你在团队里用,可以把配置方式整理成文档,让每个人按统一流程配。这样出问题时排查起来也快,因为大家的环境是一致的。
另外,环境变量的优先级问题也值得注意:有些工具会同时读 shell 环境变量和项目内的配置文件,当两者冲突时以哪个为准,取决于工具的实现。遇到行为不一致时,先确认到底读的是哪一份配置。
9. 最后聊几句实际感受
我从第一次听说 Claude Code 到真正跑通,中间卡了大概一个下午,主要时间花在 Node 版本和鉴权配置上。跑通之后的使用体验确实和普通聊天工具不一样,它能真正参与到工程里,而不只是给建议。
对新手来说,最容易低估的是环境准备这一步。很多人以为装个工具就是一条命令的事,结果被 Node 版本、PATH、权限、环境变量轮番教育。我的建议是:把第 2 章和第 4 章的内容认真过一遍,这两块搞定,后面基本就顺了。
还有一点,工具再好也只是工具。它能帮你写代码、查问题,但最终对代码负责的还是你自己。改完的东西要 review,跑过的测试要确认,权限要收着给。把这些习惯养成了,用起来才踏实。
如果你在配置过程中遇到本文没覆盖的报错,我的排查顺序是:先看 Node 版本,再看环境变量,最后看网络和接入地址。按这个顺序走,大部分问题都能定位到。