Sublime Text 3:构建系统- node.js。NPM模块未执行。

9

我试图在Sublime Text 3的构建系统中执行node-dev。node-dev已经在我的路径下:

cmd node-dev diplay

但是,当我运行这个构建脚本时:

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

我遇到了这个错误,也说明npm在我的路径中。 npm in path img 但是当我使用node而不是node-dev运行相同的构建脚本时,它可以正常执行。
我还尝试包含指向node-dev二进制文件夹的"path"变量,但没有起作用。
谢谢任何帮助。

你能否尝试在cmd标签中更新node-dev的完整路径?例如:["c:\nodejs\bin\node-dev", "$file"] - vmx
注意:(添加于2023年2月17日)本帖中的某些内容可能引用了过时的SublimeText文档链接。读者可以通过将http://docs.sublimetext.info/en/latest替换为https://docs.sublimetext.io/guide来获得更好的结果。也称为:“Sublime Text社区文档”。 - dreftymac
5个回答

20

以下是我在Windows上使用Sublime Text 3成功的解决方法:

  1. 点击"工具" -> "构建系统" -> "新建构建系统..."
  2. 将以下文本输入到新文件中
  3. 将该文件保存为"nodejs.sublime-build"
{
  "shell_cmd": "node ${file}",
  "selector" : "source.js"
}

先决条件是已安装node.js


1
我不得不使用以下代码:`{ "shell_cmd": "node ${file/ /\\\\ /}", "selector" : "source.js" }`因为Sublime Text否则无法解析文件名中的空格。 - Peteris
也适用于Linux。 - Anwar
1
不建议使用裸的 $file,因为正如 @Peteris 所指出的那样,它不能正确处理文件名中的空格。这不是 Sublime 的问题;shell_command 被传递给系统进行解释,所以是系统命令处理器有问题。最好使用 node \"$file\",这样文件名就会被引用到 shell 中(正则表达式也可以工作,但引用可能更容易解释)。 - OdatNurd

17

Sublime Text文档:

https://www.sublimetext.com/docs/build_systems.html

shell

可选。如果为true,则会通过shell(cmd.exe,bash ...)运行cmd命令。

尝试添加“shell:true”

{
  "cmd": ["node-dev", "$file"],
  "selector": "source.js",
  "windows" : {
     "shell": true
  }
}

1
我认为这应该被标记为答案。它解决了我的问题。谢谢! - Tarik
那个在Windows上的.sublime-build文件在哪里?它不在\AppData\Roaming\Sublime Text 3\Packages中。 - Green
1
我使用了"cmd": ["node", "$file"],而不是node-env。谢谢。 - daronwolff

6

命令在Sublime Text 3中不正确 :)

以下是将node作为构建系统运行的示例:

{
    "shell_cmd": "taskkill /F /IM node.exe & node ${file}"
}

请注意,数组版本的工作方式与Sublime Text 2中不同。

1
我认为你应该在${file}周围添加一些[转义]引号。如果文件路径中有任何空格,命令将会出错。"shell_cmd": "taskkill /F /IM node.exe & node \"${file}\"" - VictorKilo
实际上这是让它在Windows 10和ST3中正常工作的唯一方法。 - DrBug

2

对于macOS,在Sublime Text 3上,这对我有用:

最初的回答:

{
    "cmd": ["node","$file","$file_base_name"],
    "working_dir": "${project_path:${folder}}",
    "selector":"source.js"
}

选择器注释

我的选择器设置是:

最初的回答:

"selector":"*.js"

OdatNurd的建议是:

问题在于选择器不正确,它不能匹配文件名,而是匹配语法范围(即它基于使用的语法,而不考虑文件扩展名);将其从*.js更改为source.js应该可以使它正常工作。

"Original Answer"翻译成"最初的回答"

1
如果你是Windows用户,请尝试应用以下代码片段。
{
    "selector": "source.js",
    "cmd": ["C:\\Program Files\\nodejs\\node", "<", "$file"],
    "windows": {
        "shell": true
    }
}

将此保存为 node.sublime-build 文件。

如需更多信息,您可以参考http://docs.sublimetext.info/en/latest/


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