Sublime Text 2中的Node.js构建系统

29
我刚开始学习JavaScript。在做这个过程中,我厌倦了将JavaScript代码嵌入HTML文档中以便在浏览器中运行它。我想直接在Sublime的控制台中运行我的脚本,这样我就不用离开编辑器了。因此,我尝试创建一个JavaScript构建系统,因为Sublime没有自带的构建系统。
我的想法是使用Node.js作为JavaScript解释器。我使用Linux Mint的软件包管理器安装了它。据我所知,它完全可以工作。假设我有一个包含以下一行JavaScript代码的文件test.js:console.log("Hello World");
当我在控制台中运行nodejs /path/to/test.js时,我得到:Hello World。但是,我无法在Sublime中使其工作。我点击Tools/Build System/New Build System创建了一个新的构建系统。然后我输入了以下几行:{"cmd": ["nodejs", "$file"]}。据我所知,这一行是以下命令的JSON表示形式:nodejs /path/to/current/file.ext。像我说的那样,如果我手动在控制台中运行这个命令,它可以正常工作。如果我按F7键,在Sublime中启动构建系统,Sublime的控制台会出现,但是它是空的。
另一个奇怪的事情是,即使Sublime的控制台输出(不存在)表明构建系统没有被正确配置以正确地与Node.js工作,但是当我错误地尝试运行非JS文件时,例如Node.sublime-build文件,我得到了一些Node.js错误。这是在Sublime的控制台中显示的输出:/home/baerenfaenger/.config/sublime-text-2/Packages/User/Node.sublime-build:2"cmd": ["nodejs", "$file"]^
module.js: 434 var compiledWrapper = runInThisContext(wrapper,filename,true); ^ SyntaxError:意外的令牌: 在模块.js中(Module._compile):434:25在执行实际的JavaScript代码时,为什么我没有获得任何输出?谢谢你提前!错误信息如下:at Object..js (module.js:464:10),在模块加载(module.js:353:32)时,通过Function._load (module.js:311:12)函数完成,同时也存在于数组[0]中(module.js:484:10),EventEmitter._tickCallback(node.js:190:39)所触发的回调函数已经结束[以退出码1结束,共用0.1秒]。

1
Sublime Text并没有内置一个,但它确实带有一个可以安装的包... - Benjamin Gruenbaum
1
请查看SublimeText-Nodejs - JohnnyHK
谢谢@JohnnyHK。我仍然不知道为什么我的自定义构建系统不起作用。但是,使用上面提到的软件包,我只需要按<i>Alt + R</i>即可获得我想要的控制台输出!此软件包还提供了让您告诉它在PATH中找到Node.js的选项。太棒了! - typeduke
1
在您的构建系统中,尝试指定node而不是nodejs - Mrchief
我也卡住了,似乎什么都不起作用。请帮忙:http://stackoverflow.com/questions/25515319/sublimetext-2-javascript-console - Alexandre Palma
13个回答

46
{
    "cmd": ["node","$file"]
}

在 Windows 中,这个方法对我非常有效,它会在 Sublime 窗口中显示输出结果。虽然我不知道如何在 Sublime 中停止服务器,但我必须搜索并终止 Node 进程。

另外,请确保 Node 在您的 PATH 路径中;)

希望它对您有用。


2
你的解决方案对我很有效。我能够通过使用工具,取消构建或Ctrl+Break(Sublime Text 3)停止构建。 - Rob Koch
它在我的Windows上完美运行,但在OS X上无法工作。我已将/ur/local/bin添加到我的PATH中,但仍无法工作。 - dmeehan
@dmeehan 我在近两年前发布了这个答案,我不记得它是否适用于OS X。你可以查看oozzal的答案,它似乎适用于OS X。无论如何,今天下午我会检查并更新我的答案,使其适用于OS X和rob的评论,我完全错过了。 - garcianavalon
3
你还可以设置一个路径(仅针对此构建系统),方式是 { "cmd": ["node", "$file"], "path": "/usr/local/bin/" } 。在OS X上运行完美。 - max

43

如果您是Mac用户,请在终端中键入which node。它会输出Node可执行文件的路径,大多数情况下为/usr/local/bin/node。现在,在Sublime Text中使用以下设置创建新的构建系统(Tools > Build System > New Build System)。

{   
  "cmd": ["/usr/local/bin/node", "$file"],   
  "selector": "source.js"   
}

1
只要你将文件命名为“source.js”,就可以在Mac上运行,或者你可以将选择器更改为“*.js”。 - John Doe

7

已在Ubuntu Linux上进行测试。使用如下文件选择器:

{
  "cmd": ["node", "$file"],
  "selector": "*.js"
}

1
如果系统没有安装 Node.js 二进制文件,(如果使用 nvm),请将上面的 "node" 替换为 path/to/nvm/node。 - Luke W

4
以下是关于Windows的提示:
这个主题中大部分答案是正确的,但没有一个是完整的,至少没有一个答案讲述了如何杀死现有的Node进程,即使您能够在sublime中运行node。因此,最终,如果上述任何一种方法适用于您,您将不得不手动杀死Node。
以下是我为“Windows”所做的:
1. 打开Sublime Text,转到“工具”->“构建系统”->“新建构建系统” 2. 上面将打开一个新文件,请将下面的内容粘贴到该文件中,并将其另存为nodejs.xxx(使用默认扩展名): { "cmd": ["c:/test.bat","$file"] } 3. 创建一个文件(c:/test.bat),并将以下内容粘贴到其中(包括两行):
taskkill /F /IM "node.exe" "c:/Program Files/nodejs/node.exe" %1
4. 保存它,切换到Sublime Text并选择“工具”->“构建系统”->“nodejs” 5. 打开任何Nodejs可执行文件,然后按CTRL+B。 6. 您可以开始使用了。 :)
享受noding。

3

2

这个在Windows7系统下对我有效。

1)打开Sublime Text,进入“工具”->“构建系统”->“新建构建系统”

2)粘贴以下内容:

{

"cmd": ["C:\\Program Files (x86)\\nodejs\\node","$file"]

\\ 转义字符

\\ 转义字符

3) 另存为 Node.sublime-build

4) 编写新的js文件,按下CTRL+B进行构建。

点击此处查看图片示例。


1
在Windows上,以下配置有效:
{
    "cmd": ["C:\\Program Files\\nodejs\\node.exe", "$file"],
    "selector": "source.js"
}

1
通常情况下
"cmd":["node",$file]

这种方法可以起作用,但是没有停止服务器的方式。 我找到了最好的解决方案,它在新控制台中打开服务器,并自动关闭。 它也可以与supervisors或node-inspector一起使用。

"cmd" : ["start", "cmd.exe", "/C", "node", "$file"]

我希望它能有所帮助


它给了我错误,带有[line:column]: [3:2]。你能否提供一个参考链接或简要说明,以便理解Sublime中构建类型文件的语法。谢谢。 - Felix Aballi

1
我只能看到控制台输出,前提是文件存在/已保存在磁盘上。(对于匿名文件,我也看不到输出)希望这有所帮助。

1
我使用的是Windows系统,并创建了一个新的构建系统,内容如下:

{
"cmd": ["node", "$file"],
"selector": "source.js",
"working_dir": "${project_path:${folder}}",
"path": "C:\\Program Files\\nodejs"
}

我在Sublime中成功运行了一个JavaScript文件。

我的JavaScript文件内容如下:

var a = 10;
var b = 20;

var resultado = a + b;

console.log('resultado:', resultado);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接