为了解释您的问题,首先重要的是要意识到虽然该功能称为build,但它同样适用于运行解释程序和实际构建 任何东西;与其将其视为“构建”工具,不如将其视为“运行一些外部程序来做某事”工具。
话虽如此,Sublime 预装了一些针对各种语言的不同构建系统,但 JavaScript 不是其中之一。这可能是因为通常不清楚特定的 JavaScript 文件是要在浏览器中使用,还是通过 node 之类的方式执行,但这只是猜测。
在您的情况下,文本 No build system 字面意思是告诉您,您已经告诉 Sublime 自动为您正在编辑的文件类型选择合适的构建系统,但它没有找到,所以有它无能为力。
问题的解决方案是安装包含 JavaScript 构建系统的第三方包(请参阅 Package Control)或自己创建一个。
Sublime 的一个很好的经验法则是,如果有一个命令可以从命令提示符执行,它会执行你想要的操作,并且你不需要与该命令交互(即它不需要在它做某事之前或期间问你问题),你可以设置 Sublime 为你运行该命令。
一个可以用来执行 JavaScript 的工具是 NodeJS,它提供了一个名为 node 的命令,如果你安装它就可以执行 JavaScript 文件:
tmartin:dart:~> cat sample.js
console.log("Hello, world!")
tmartin:dart:~> node sample.js
Hello, world!
由于这是一个我们可以从终端执行的命令来做我们想做的事,而且它不需要我们与它交互来告诉它如何做任何事情,我们可以设置一个构建系统来使用它.
作为一个示例,从菜单中选择Tools > Build System > New Build System...,然后用以下代码替换文件的内容,然后将其保存在Sublime默认的位置,如JavaScript.sublime-build :
{
"shell_cmd": "node \"${file}\"",
"selector": "source.js"
}
这只是说在执行这个构建时,Sublime 应该使用命令 node 并提供你当前正在编辑的文件的名称,并且这个构建系统适用于 source 类型为 @987654336 的文件@ (JavaScript)。
有了这个,如果你选择Tools > Build System > Automatic或Tools > Build System > JavaScript(菜单中的名称反映了你用于文件的名称),你应该可以使用Ctrl+B执行你的程序:
注意:这是一张较旧的图片,使用cmd而不是shell_cmd;这两个示例的工作方式相同,但推荐使用 shell_cmd,除非您有令人信服的理由不这样做。
您可以查看official documentation on build systems,了解有关构建系统中可用选项的更多信息。
重要提示:
如果您收到类似command not found 或类似的错误,这意味着您输入的命令不正确,该程序未安装,或者您需要告诉您的计算机(以及 Sublime)在哪里可以找到通过修改你的PATH;你如何做到这一点是系统特定的。
确保在尝试运行新文件之前至少手动保存一次;在您执行此操作之前,该文件尚未在磁盘上且无法执行,这可能会导致出现奇怪的错误。最好确保检查Tools > Save all on build 以确保您在构建时磁盘上的文件始终是最新的,但这不会保存还没有名称的新文件。
我说过两次,但值得重复;如果您需要以任何方式 与命令进行交互,这对您不起作用(您无需进行任何更改)。这包括如果您尝试执行一个希望您与之交互的脚本(例如,它会询问您的姓名,然后打印它等等)。在这种情况下,您的程序似乎会永远挂起,因为它正在等待您无法提供的输入。