【问题标题】:Node.js build system in Sublime Text 2Sublime Text 2 中的 Node.js 构建系统
【发布时间】:2013-01-03 20:26:00
【问题描述】:

我刚开始学习 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
就像我说的,如果我手动运行它在控制台中,它工作得很好。如果我在 Sublime 中按 F7(Build 的快捷方式),就会出现 Sublime 的控制台。虽然是空​​的。

还有一件奇怪的事情。尽管 Sublime 控制台的(不存在的)输出表明构建系统未配置为正确使用 Node.js,但当我不小心尝试运行非 JS 文件(例如Node.sublime-build 文件。这是 Sublime 控制台中显示的输出:

/home/baerenfaenger/.config/sublime-text-2/Packages/User/Node.sublime-build:2 "cmd": ["nodejs", "$file"] ^

module.js:434 var compiledWrapper = runInThisContext(wrapper, 文件名, true); ^ SyntaxError:意外的令牌: 在 Module._compile (module.js:434:25) 在 Object..js (module.js:464:10) 在 Module.load (module.js:353:32) 在 Function._load (module.js:311:12) 在 Array.0 (module.js:484:10) 在 EventEmitter._tickCallback (node.js:190:39) [0.1s 完成,退出码 1]

那么为什么在执行实际的 JavaScript 代码时没有得到任何输出呢?先感谢您!

【问题讨论】:

  • Sublime 没有内置的,但它确实带有一个可以安装的包...
  • 谢谢@JohnnyHK。我仍然不知道为什么我的自定义构建系统不起作用。但是,使用上面提到的包,我只需按 Alt + R 即可获得我想要的控制台输出!这个包还让你可以选择告诉它在 PATH 中哪里可以找到 Node.js。太好了!
  • 尝试在构建系统中仅指定 node 而不是 nodejs
  • 我也卡住了,似乎没有任何效果。请帮忙:stackoverflow.com/questions/25515319/…

标签: javascript node.js sublimetext2


【解决方案1】:
{
    "cmd": ["node","$file"]
}

在 Windows 中非常适合我,它在 sublime 窗口中显示输出。虽然我不知道从 sublime 之后如何停止服务器,但我必须搜索并杀死节点进程。

另外,检查节点是否在您的 PATH 中;)

希望它对你有用。

【讨论】:

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

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

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

【讨论】:

  • 在 mac 上工作,只要您始终将文件命名为 source.js,或者您可以将选择器更改为 "*.js"
【解决方案3】:

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

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

【讨论】:

  • 如果没有系统节点二进制文件,(如果使用nvm),将上面的“node”替换为path/to/nvm/node
【解决方案4】:

这是 Windows 的提示,

这个线程的大部分答案都是正确的,但没有一个是完整的,至少没有答案告诉你如何杀死现有的 Node 进程,即使你能够在 sublime 中运行 node。所以最终,如果上述任何一种方法对你有用,你最终都会手动杀死 Node。

这是我为“Windows”所做的:

  1. 打开 Sublime Text,转到“工具”->“构建系统”->“新构建系统”
  2. Above 将打开一个新文件,将下面的内容粘贴到那里,并将其保存为 nodejs.xxx(使用默认扩展名): { "cmd": ["c:/test.bat","$file"] }
  3. 创建一个文件 ( c:/test.bat ) 并将此内容(均为 2 行)粘贴到那里:

taskkill /F /IM "node.exe" "c:/Program Files/nodejs/node.exe" %1

  1. 保存,切换到 Sublime Text 并选择“工具”->“构建系统”->“nodejs”
  2. 打开任何 Nodejs 可执行文件并按 CTRL+B。
  3. 你可以走了。 :)

享受点头。

【讨论】:

    【解决方案5】:

    下面链接的方法#2为我解决了:

    http://www.wikihow.com/Create-a-Javascript-Console-in-Sublime-Text

    【讨论】:

      【解决方案6】:

      这在 Windows7 中适合我

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

      2) 粘贴此文本

      {

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

      }

      \\转义字符

      3) 另存为 Node.sublime-build

      4) 新建一个js文件,按CTRL+B构建。

      点击here查看图片示例。

      【讨论】:

        【解决方案7】:

        正常

        "cmd":["node",$file]
        

        会起作用的。但是,没有办法停止服务器。 我找到了在新控制台中打开服务器并自动关闭它的最佳解决方案。 我也可以与主管或节点检查员一起工作

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

        希望对你有帮助

        【讨论】:

        • 它给了我错误,带有 [line:column]: [3:2]。您能否提供一个参考链接或简短的解释来理解 Sublime 的构建类型文件中的语法。谢谢。
        【解决方案8】:

        只有当文件存在/保存在磁盘上时,我才能看到控制台输出。 (对于匿名文件,我也看不到输出)

        希望对你有帮助

        【讨论】:

          【解决方案9】:

          在 Windows 上,以下配置有效:

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

          【讨论】:

            【解决方案10】:

            我正在使用 Windows,并使用以下内容创建了一个新的构建系统:

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

            然后在 Sublime 中运行一个带有 sucessul 的 JavaScript 文件。

            我的 JavaScript 文件包含以下内容:

            var a = 10;
            var b = 20;
            
            var resultado = a + b;
            
            console.log('resultado:', resultado);

            【讨论】:

              【解决方案11】:

              可能取决于环境变量——尝试使用节点的完整路径,而不仅仅是“nodejs”。 它在 Mac OS 上对我有用(例如 /usr/local/node 而不仅仅是节点)

              【讨论】:

                【解决方案12】:

                如果一切都失败了,请检查 Node Supervisor.......您只需要更改代码,服务器将自行重启,这样您就可以实时看到更改 =)

                【讨论】:

                  【解决方案13】:

                  在 linux 上我用这个,只要确保你在你的主文件上

                  {
                      "shell_cmd": "pkill node ; node $file"
                  }
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2015-03-01
                    • 2013-07-12
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-09-06
                    • 1970-01-01
                    • 2012-07-28
                    • 2020-10-07
                    相关资源
                    最近更新 更多