需将构建系统中 cmd 字段设为 node 绝对路径、working_dir 设为 "$file_path"、encoding 设为 "utf-8",且文件保存在 packages/user/ 目录下并正确选择构建系统。

Ctrl+B 报 “node is not recognized” 怎么办
这不是 Sublime 的问题,而是它根本没找到 node 可执行文件。GUI 启动的 Sublime(比如从 Dock、开始菜单点开)通常不继承 shell 的 PATH,哪怕你在终端里 node -v 正常也没用。
- 打开独立终端(不是 Sublime 内置 console),运行
which node(macOS/Linux)或where node(Windows),拿到绝对路径,例如/opt/homebrew/bin/node或C:/Program Files/nodejs/node.exe - 如果你用
nvm,先在终端里nvm use 18.19.0切到目标版本,再验证node -v - 别信“自动检测 PATH”,GUI 模式下几乎不可靠;
shell_cmd字段也不能绕过这个问题
构建系统里 cmd 字段必须写死绝对路径
cmd 是唯一能稳定调用 node 的方式,且必须是数组格式,不能写成字符串。
- 错误写法:
"cmd": "node $file"—— Sublime 完全不识别 - 危险写法:
"cmd": ["node", "$file"]—— 仅当 PATH 完美继承时才偶然生效,多数 GUI 启动场景会失败 - 正确写法:
"cmd": ["/opt/homebrew/bin/node", "$file"](macOS)或"cmd": ["C:/Program Files/nodejs/node.exe", "$file"](Windows) - Windows 路径含空格时,用正斜杠
/或双反斜杠\,单反斜杠会导致 JSON 解析失败
working_dir 和 encoding 不设就跑不通
漏掉这两个字段,脚本大概率报错或乱码,不是“可选优化”,而是执行前提。
-
"working_dir": "$file_path":让require('./utils')、fs.readFile('config.json')按当前 JS 文件所在目录解析路径;不设就默认在 Sublime 安装目录或用户主目录找,必然MODULE_NOT_FOUND或ENOENT -
"encoding": "utf-8":必须配合cmd使用,解决中文console.log('你好')在 Windows 控制台变问号的问题;shell_cmd下这个字段被忽略 - JS 文件本身也得保存为无 BOM 的 UTF-8 编码,否则仍可能触发乱码
构建系统文件放错位置或命名不对就白配
Sublime 只认 Packages/User/ 目录下的 .sublime-build 文件,其他位置一概无效。
- 路径必须是:
Packages/User/Node.sublime-build(或任意名字,但后缀必须是.sublime-build) - 文件名不能带空格或中文,比如
Node.js 构建系统.sublime-build就不会被识别 - 新建方式推荐:按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Build System: New Build System…,直接生成标准模板再改内容 - 配置完后,务必在 JS 文件里按
Ctrl+B前确认右下角状态栏显示的是你刚建的构建系统名,否则 Sublime 实际没用上
node 命令在哪、工作目录在哪、输出怎么解码——这三个点任何一个没对齐,Ctrl+B 就只是安静地按下去而已。










