必须硬编码node绝对路径,设"working_dir":"$file_path"和"encoding":"utf-8";先在终端运行which node或where node获取路径,再写入.sublime-build文件的"cmd"数组中。

Ctrl+B 报 “'node' is not recognized” 怎么办
这不是 Sublime 的问题,是它根本没找到 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 路径含空格时,用正斜杠
/或双反斜杠\,不能用单反斜杠 -
"shell": true在 macOS/Linux 上有助于加载 nvm 环境;Windows 若已确认node进了系统 PATH,可设为false
require('./xxx') 报 MODULE_NOT_FOUND 或 ENOENT
原因只有一个:当前工作目录不是你的 JS 文件所在目录。Sublime 默认从它自己的安装路径启动 node,所有相对路径都崩了。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 必须加
"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—— 它已多年未维护,兼容性差,容易卡死 - 交互式脚本(如
readline、HTTP server)别指望 Ctrl+B 跑起来,必须用Terminus插件开终端面板手动运行
Packages/User/ 目录下,文件名以 .sublime-build 结尾,JSON 格式不能有注释或尾随逗号——这些细节看着琐碎,但错一个就整个构建系统不生效。










