sublime text 本身不运行 javascript,仅调用系统已安装的 node 命令;ctrl+b 失效或报“node is not recognized”主因是 gui 启动时 path 未继承,需通过终端启动或修正环境变量,而非修改构建配置。

Sublime Text 本身不运行 JavaScript,它只调用系统已安装的 node 命令;配置失败的绝大多数情况,不是 JSON 写错了,而是 node 在 Sublime 的执行环境中根本不可见。
为什么 Ctrl+B 按了没反应,或报 “node is not recognized”
这不是 Sublime 的 bug,是环境隔离导致的 PATH 不一致。macOS/Linux GUI 启动 Sublime(比如从 Dock 点开)时,不会加载 ~/.zshrc 或 ~/.bash_profile 里的 PATH;Windows 上如果安装 Node.js 时没勾选 “Add to PATH”,cmd 能运行但 Sublime 构建系统找不到。
- 先在终端里运行
which node(macOS/Linux)或where node(Windows),确认路径存在 - macOS/Linux 用户:别从图标启动,改用终端执行
subl .打开项目,这样能继承当前 shell 环境 - Windows 用户:检查系统环境变量里是否包含 Node.js 安装目录(如
C:\Program Files\nodejs\),没有就手动加 - 不要在构建配置里硬写绝对路径(比如
/opt/homebrew/bin/node),换机器或重装就失效
Build System 配置该用 cmd 还是 shell_cmd
两者都能用,但行为差异直接影响中文路径、空格、shell 别名支持:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
-
"cmd": ["node", "$file"]是跨平台安全写法,但 Windows 下遇到路径含空格(如C:\My Project\index.js)会失败,因为没自动加引号 -
"shell_cmd": "node \"${file}\""更鲁棒:双引号包裹${file}防空格崩溃,且能识别alias node=nvm use 18这类 shell 别名(macOS/Linux) - Windows 用户若用
shell_cmd,建议确保默认 shell 是 PowerShell 或 Git Bash,避免 cmd 的 GBK 编码导致中文乱码 - 无论选哪个,都必须加
"working_dir": "${file_path}",否则require('./config.json')会从 Sublime 安装目录去找文件
ES Module(import/export)报错怎么解
错误信息 SyntaxError: Cannot use import statement outside a module 和 Sublime 无关,是 Node.js 自身限制 —— 默认按 CommonJS 模式解析 .js 文件。
- 最快解法:把文件后缀改成
.mjs,同时把构建系统的"selector"改成"source.mjs" - 次选:在项目根目录放一个
package.json,内容为{"type": "module"},这样同目录下所有.js都按 ESM 解析 - 别指望 Build System 自动加
--experimental-modules—— 这个 flag 早被移除了,Node.js 12.20+ 后只认.mjs或type: module - 如果用了
import就别混用require(),ESM 下require是未定义的
想传参数或交互式运行怎么办
原生 Build System 是单次执行、无 stdin、无法 Ctrl+C 中断 —— 它本质就是跑一条命令,不是开个终端。
- 传固定参数:用
"shell_cmd": "node \"${file}\" --port 3000",但每次改参数都要改配置 - 传动态参数:加
"variants",例如"name": "Run with args"+"shell_cmd": "node \"${file}\" $1",按Ctrl+Shift+B后输入参数(如--inspect) - 需要交互(比如
readline输入、或nodemon热重启):必须换方案 —— 装Terminus插件,在面板里手动敲node index.js,才能真正获得终端控制权 - 调试不能靠 Build System:
debugger;语句需配合node --inspect-brk+ Chrome DevTools,和构建系统无关
最常被忽略的一点:Sublime 不会自动保存文件再构建。改完代码忘了按 Ctrl+S,$file 指向的还是磁盘上旧版本 —— 输出永远不对,却以为是配置问题。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










