sublime text 运行 node.js 需硬编码 node 绝对路径并设置 "working_dir": "$file_path",否则因 path 不继承、工作目录错误导致命令未找到或模块加载失败;中文乱码需设 "encoding": "utf-8" 且文件存为无 bom utf-8;调试须用 "--inspect-brk" 配合 chrome devtools。

Sublime Text 本身不运行 Node.js,它只调用你系统里已装好的 node 可执行文件。如果你在终端里 node -v 都报错,那 Sublime 肯定跑不起来——这不是配置问题,是前置条件没满足。
Ctrl+B 报 “'node' is not recognized” 怎么办
这不是 Sublime 的 bug,是它根本没找到 node 可执行文件。GUI 启动的 Sublime(Dock、Spotlight、开始菜单)不继承 shell 的 PATH,哪怕你在终端里 node -v 正常,它也大概率失败。
- 先在独立终端(不是 Sublime 自带 console)运行
which node(macOS/Linux)或where node(Windows),拿到绝对路径,例如/opt/homebrew/bin/node或C:/Program Files/nodejs/node.exe - 别用
"cmd": ["node", "$file"]—— 这依赖PATH继承,不稳定;必须硬编码绝对路径:"cmd": ["/opt/homebrew/bin/node", "$file"] - Windows 路径含空格时,用正斜杠
/或双反斜杠\,不能用单反斜杠
require('./xxx') 报 MODULE_NOT_FOUND 或 ENOENT
原因只有一个:当前工作目录不是你的 JS 文件所在目录。Sublime 默认从它自己的安装路径启动 node,所有相对路径都崩了。
- 必须加
"working_dir": "$file_path"—— 这让process.cwd()和你在终端里cd /path/to && node index.js行为一致 - 漏掉这行,
require('./config')、fs.readFile('data.json')、甚至dotenv加载.env都会失败 -
$file_path是不含文件名的完整目录路径,不是$file
中文输出变问号或乱码
尤其 Windows 下常见,因为 cmd 默认用 GBK 编码,而 JS 文件和输出都是 UTF-8。
- 下载加
"encoding": "utf-8"—— 它只对cmd字段有效,shell_cmd下会被忽略 - JS 文件本身也要存成无 BOM 的 UTF-8,否则 Node.js 读取时可能出错
- 别指望
"shell_cmd": "node $file"能解决编码问题,它绕过 Sublime 的编码控制机制
想调试(断点、变量查看),不是只看 console.log
Sublime 本身没有图形化调试器。真要断点调试,得靠 Node.js 的 --inspect-brk + Chrome DevTools,Sublime 只负责启动带参数的进程。
- 构建系统里写
"cmd": ["/opt/homebrew/bin/node", "--inspect-brk", "$file"],运行后底部面板会输出类似Debugger listening on ws://127.0.0.1:9229 - 打开 Chrome,访问
chrome://inspect→ 点击 “Open dedicated DevTools for Node” → 在 Sources 面板里设断点 - 别用
sublimerepl插件配target: sublimerepl.repl—— 它已多年未维护
最易被忽略的是:每次切换 Node 版本(尤其是用 nvm 时),which node 输出会变,但 Sublime 构建配置不会自动更新。硬编码路径意味着你得手动改 .sublime-build,否则就调用了旧版本甚至失效路径。










