sublime text 无法原生调试 node.js,必须通过终端执行 node --inspect-brk 手动启动调试进程,并在 chrome 的 chrome://inspect 中连接;构建系统仅支持运行,不支持调试功能。

Sublime Text 本身不支持断点调试,所谓“配置 Node Inspector”不是让 Sublime 变成 IDE,而是让它启动一个可被 Chrome DevTools 连接的 Node 进程——关键在 node --inspect-brk 和外部工具配合,不是插件或构建系统能搞定的。
为什么直接写 node --inspect-brk $file 到构建系统里没用
Sublime 的 Build System 只负责执行命令、捕获 stdout/stderr,它不会监听 WebSocket、不解析 V8 Inspector 协议、也不提供「Attach」能力。你看到 Debugger listening on ws://127.0.0.1:9229 后卡住,是因为进程确实在等调试器连接,但 Sublime 不是调试器,它既不会自动打开 Chrome,也无法接管单步/变量查看等操作。
常见错误现象:
- 按
Ctrl+B后控制台只输出一行监听地址,然后无响应 - Chrome 访问
chrome://inspect看不到你的脚本(端口被占、进程已退出、或用了旧版--debug-brk) - 断点打了但完全不触发(因为没连上调试会话,只是普通运行)
node --inspect-brk 必须手动在终端启动
这是目前最稳、兼容性最好、且无需额外插件的方式。Sublime 只管编辑,调试交给 Chrome。
实操步骤:
- 确认 Node 版本 ≥ v12:
node -v,低于 v12 不支持--inspect协议 - 终端进入项目目录:
cd /path/to/your/project - 手动运行:
node --inspect-brk app.js(--inspect-brk比--inspect更可靠,强制首行暂停) - 打开 Chrome,访问
chrome://inspect→ 点击 “Open dedicated DevTools for Node” → 找到你的脚本,点inspect
注意:Ctrl+B 在 Sublime 里此时无效;改代码后必须手动 Ctrl+C 停掉旧进程,再重跑命令。
构建系统只能做运行,不能替代调试
如果你仍想用 Ctrl+B 快速运行(非调试),构建系统要避开 PATH 继承陷阱:
- 不要依赖
"shell": true—— GUI 启动的 Sublime 几乎不加载 shell 配置(如~/.zshrc) - macOS/Linux:用
which node找绝对路径,比如/opt/homebrew/bin/node - Windows:用
where node,比如C:/Program Files/nodejs/node.exe - 构建文件内容必须是数组:
["/opt/homebrew/bin/node", "$file"],不能写成字符串 - 务必加
"working_dir": "$file_path",否则require('./utils')会报Cannot find module
示例 NodeJS.sublime-build:
{
"cmd": ["/opt/homebrew/bin/node", "$file"],
"working_dir": "$file_path",
"selector": "source.js"
}
别碰过时的 node-inspector 插件
node-inspector 已停止维护多年,不支持 Node v12+,且依赖老旧的 Socket.IO 和 Express,容易报 ERR_CONNECTION_REFUSED 或白屏。官方早已用内置 --inspect 协议替代它。
现在还提 node-inspector 的教程,基本是照抄 2013 年的老资料。你装了也跑不起来,更别说和 Sublime 集成。
真正该关注的只有两件事:确保 node --inspect-brk 能在终端跑通,以及 Chrome 能连上 chrome://inspect。其余所有“一键调试”插件,底层都是包装这两步,稳定性远不如手动执行来得可控。










