Sublime Text Ctrl+B 报 node 未识别,主因是 GUI 启动不继承 shell PATH,须在 NodeJS.sublime-build 中写死 node 绝对路径,并配置 "working_dir": "$file_path" 和 "encoding": "utf-8"。

Sublime Text 不能“自动识别” node,Ctrl+B 报 'node' is not recognized 或 command not found,90% 是因为没写死 node 绝对路径——GUI 启动的 Sublime 根本不继承 shell 的 PATH。
确认终端里 node -v 真的能跑
这不是前置步骤,是硬门槛。Sublime 不装 Node.js,只调用你系统里已有的可执行文件。
- 开独立终端(不是 Sublime Console),执行
node -v和npm -v,必须有输出 - macOS/Linux 运行
which node,典型结果如/opt/homebrew/bin/node或/usr/local/bin/node - Windows 运行
where node,典型结果如C:\Program Files\nodejs\node.exe - 若无输出:重装官网 LTS 版;Windows 安装时务必勾选 “Add to PATH”;macOS 避免 Microsoft Store 版本
新建 NodeJS.sublime-build 并写死 node 路径
别用 "cmd": ["node", "$file"] —— 这依赖 PATH,GUI 启动下几乎必挂。必须把 which node 或 where node 输出的完整路径填进去。
根据 package.json 中的 engines 字段自动检测 Node.js 版本需求,未安装 nvm 时自动安装并切换至对应版本。支持 Windows、macOS、Linux。适用于 Node.js 项目开发、版本切换和环境配置。
- 菜单栏 → Tools → Build System → New Build System…
- 清空内容,粘贴以下 JSON(把
/your/path/to/node换成你的真实路径):
{
"cmd": ["/your/path/to/node", "$file"],
"selector": "source.js",
"working_dir": "$file_path",
"encoding": "utf-8"
}
- 保存为
NodeJS.sublime-build,必须放在Packages/User/目录下(macOS:~/Library/Application Support/Sublime Text/Packages/User/;Windows:%APPDATA%\Sublime Text\Packages\User\) - 注意:
cmd必须是数组,不能写成字符串"cmd": "node $file",否则 Sublime 直接忽略
working_dir 和 encoding 缺一不可
漏掉 "working_dir": "$file_path",require('./utils') 或 fs.readFileSync('config.json') 就会报 MODULE_NOT_FOUND 或 ENOENT;不加 "encoding": "utf-8",Windows 下中文输出大概率变问号。
-
"working_dir": "$file_path"强制 Node.js 启动时当前工作目录(cwd)为 JS 文件所在目录,和你在终端里cd /path && node index.js行为一致 -
"encoding": "utf-8"只对cmd字段生效,shell_cmd下无效 - JS 文件本身也得存为「无 BOM 的 UTF-8」,否则中文读写仍可能出错
最常被跳过的其实是 working_dir:很多人只盯着 node 找不找得到,却在 require 相对路径时卡住半天,最后发现只是 cwd 错了。

















