javascript - Sublime Text 在 Ubuntu/Linux 上说“没有构建系统”
问题描述
最近我切换到Ubuntu/Linux并搜索了一些好的文本编辑器,我发现了Sublime Text,我是编码的初学者,我在 Windows 中使用 Notepad++。
在我下载了 sublime text 之后,我尝试用 javascript 编写一些代码以查看它是否有效,但它说“没有构建系统”,当我寻找它时,我没有找到任何 linux 指南......在 Notepad++ 中我都是必须做的是单击运行和ta da,输出屏幕就在那里。
我对 linux 或 sublime 文本了解不多,我的确切问题是如何运行并在输出屏幕中查看我的代码,目前我正在使用Javascript,我不知道什么是“构建系统”,我只想在崇高的文本中输入一些基本代码并在屏幕上查看结果,所以如果你帮助我,我将不胜感激。
这是问题的图像:
解决方案
为了解释您的问题,首先重要的是要意识到虽然该功能被称为build
,但它同样适用于运行解释程序,因为它适用于实际构建任何东西;与其将其视为“构建”工具,不如将其视为“运行一些外部程序来做某事”工具。
话虽如此,Sublime 预装了一些针对各种语言的不同构建系统,但 JavaScript 不是其中之一。这可能是因为通常不清楚特定的 JavaScript 文件是要在浏览器中使用,还是通过类似node
的方式执行,但这只是猜测。
在您的情况下,文本No build system
实际上是在告诉您,您已告诉 Sublime 自动为您正在编辑的文件类型选择合适的构建系统,但它没有找到,因此它无能为力。
该问题的解决方案是安装包含 JavaScript 构建系统的第三方包(请参阅包控制)或自己创建一个。
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
类型js
(JavaScript) 的文件。
有了它,如果您选择Tools > Build System > Automatic
或Tools > Build System > JavaScript
(菜单中的名称反映了您用于文件的名称),您应该能够使用Ctrl+B来执行您的程序:
注意:这是一个较旧的图像,使用cmd
而不是shell_cmd
; 这两个示例的工作方式相同,但shell_cmd
除非您有令人信服的理由不这样做,否则这是推荐的方式。
您可以查看有关构建系统的官方文档,以获取有关构建系统中可用选项的更多信息。
重要笔记:
如果您收到类似
command not found
或类似的错误,则意味着您输入的命令不正确,该程序未安装,或者您需要通过修改您的PATH
;来告诉您的计算机(以及 Sublime)在哪里可以找到它。你如何做到这一点是系统特定的。确保在尝试运行之前至少手动保存一次新文件;在您执行此操作之前,该文件尚未在磁盘上且无法执行,这可能会导致出现奇怪的错误。确保检查以确保您在构建时磁盘上的文件始终是最新的可能是个好主意
Tools > Save all on build
,但这不会保存还没有名称的新文件。我说过两次,但值得重复;如果您需要以任何方式与命令交互,这对您不起作用(您无需更改)。这包括如果您尝试执行一个希望您与之交互的脚本(例如,它会询问您的姓名,然后将其打印出来等等)。在这种情况下,您的程序似乎会永远挂起,因为它正在等待您无法提供的输入。
推荐阅读
- python - 从 pygame-zero 主窗口调用另一个 pygame-zero 程序
- python - 更改运行 python 使用命令提示符时使用的默认库
- pandas - 布尔值的饼图问题
- haskell - Haskell - 多参数类型类的自定义运算符?
- reactjs - Reactjs 推送通知不适用于移动浏览器
- chromium - OBS 和 Opera 上的 Linux PopOS Twitch 错误 #4000
- javascript - JavaScript JQuery从数据库中操作奇怪的数组类型
- node.js - 编译 NPM 给出 elifecycle 3221225725
- c# - 从微服务连接到 postgresql 的最佳实践是什么
- sql - 我将如何在 oracle sql 中编写这个复杂的查询