问题描述
在本地运行 Claude Code 时,可能会遇到以下错误:

Stop [/Users/用户名/.claude/count_tokens.js] failed with non-blocking status code 1:
(node:87997) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
SyntaxError: Cannot use import statement outside a module
at wrapSafe (node:internal/modules/cjs/loader:1378:20)
at Module._compile (node:internal/modules/cjs/loader:1428:41)
...
错误原因
这个错误发生的原因是:
- Claude Code 的
count_tokens.js
文件使用了 ES 模块语法(import
语句) - 但 Node.js 没有正确识别该文件为 ES 模块
- Node.js 默认将
.js
文件当作 CommonJS 模块处理
解决方案
方案 1:添加 package.json(推荐 ✅)
这是最简单有效的解决方案:
- 重启 Claude Code
创建或修改 package.json
文件:
echo '{"type": "module"}' > package.json
进入 Claude 配置目录:
cd ~/.claude
验证成功:此方案已被验证有效!
方案 2:重命名文件扩展名
如果方案 1 不生效,可以尝试:
cd ~/.claude
mv count_tokens.js count_tokens.mjs
方案 3:清理重装
如果问题持续存在:
# 备份配置(可选)
cp -r ~/.claude ~/.claude_backup
# 清理配置
rm -rf ~/.claude
# 重新安装 Claude Code
npm install -g @anthropic-ai/claude-code
方案 4:修改文件内容(临时方案)
将 ES 模块语法改为 CommonJS 语法:
// 原代码:
import { readFile, stat, readdir, writeFile, mkdir } from 'node:fs/promises';
// 修改为:
const { readFile, stat, readdir, writeFile, mkdir } = require('node:fs/promises');
为什么推荐方案 1?
- 简单快速:只需要一个命令就能解决
- 不破坏原有结构:不需要修改 Claude Code 的原始文件
- 符合标准:按照 Node.js 官方规范解决 ES 模块问题
- 已验证有效:实际测试证明这个方案可以解决问题
预防措施
- 保持 Claude Code 更新到最新版本
- 如果遇到类似问题,优先检查是否缺少
package.json
配置
相关信息
- 适用版本:Node.js v20.18.3 及相关版本
- 操作系统:macOS(其他系统类似)
- 解决时间:通常 1-2 分钟即可完成
总结
遇到 "Cannot use import statement outside a module" 错误时,99% 的情况下都是因为缺少 ES 模块配置。通过在 ~/.claude/
目录下添加包含 "type": "module"
的 package.json
文件,就能快速解决这个问题。
希望这个解决方案能帮助到遇到相同问题的开发者!🚀
Claude Code "Cannot use import statement outside a module" 错误解决方案
Claude Code "Cannot use import statement outside a module" 错误解决方案