如何从 vscode 中的自定义参数启动 nodejs

31

有没有办法在启动nodeJS时添加额外的命令行参数?

例如:

--harmony_generators
--harmony_arrow_functions

更新:

暂时的解决方法:

  1. 创建.bat(Windows)文件,内容为:

    • {{path-to-node}}\node.exe --harmony_generators --harmony_arrow_functions %*
  2. .bat文件路径作为.\settings\launch.jsonruntimeExecutable的源。

  3. 享受吧 :)


1
Visual Studio Code 0.3.0已经修复了这个问题。 - Andre Weinand
4个回答

36
在VSCode的预览版本中,尚无法从launch.json向node传递参数。但是上面提到的解决方法可以很好地解决问题。 我已在我们这边创建了一个错误,并确保在下一个版本中修复它。
Andre Weinand, Visual Studio Code 更新: 自v0.3以来,该修复程序已纳入VSCode,并包含在.settings/launch.json文件中:
"configurations": [
    {
        ...

        // Optional arguments passed to the runtime executable.
        "runtimeArgs": [],

        ...

要以ES6支持来运行Node.js(v0.12),请使用"runtimeArgs": ["--harmony"],


很遗憾,这对我没有用。我的节点版本是v0.12.4,VS Code版本是0.5.0。这里是我的launch.json配置文件。我错过了什么吗? - JuHwon
1
你具体遇到了什么问题?launch.json看起来没问题。 - Andre Weinand
当代码遇到第一个生成器函数时,我会收到以下错误:SyntaxError: Unexpected token *。顺便说一下,它不会在入口处停止。我正在调试窗格中按下绿色播放按钮,并选择“Launch app.js”配置。 - JuHwon
请注意,在参数字符串中,您必须完全不带空格传递参数。因此,这是有效的:"runtimeArgs": ["--harmony"],但这是无效的"runtimeArgs": [" --harmony "]。 第二个会导致错误:Error: Cannot find module '/path/to/project/ --harmony ' - Lucio Mollinedo

10

在我的情况下,我正在运行以下命令和参数:

node app.js read --title="SomeTitle"

为了解决这个问题,我使用了以下方法:

"args": [
            "read",
            "\--\--title\=='SomeTitle'"
        ]

输出结果是这样的:

node --inspect=10398 --debug-brk app.js read --title='Title'

这非常适合我。

对我来说,使用runtimeArgs的建议并没有起作用,因为它是在调用我的app.js之前传递的。


3
runtimeArgs 用于 Node 的参数,args 用于脚本参数。 - Aaron C

5

在当前版本1.36.1中,您可以向您的launch.json中添加参数。

示例:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${workspaceFolder}/index.js",
            "args":["my-url=http://192.168.1.24:8984/api/", "port=3000"]
        }
    ]
}

在您的节点应用程序中,您可以捕获参数:

 process.argv.forEach(function (val, index, array) 
 {
   console.log(val);
 }  

现在,您可以运行 Visual Studio Code 调试 并查看参数如何显示。
如果您从控制台运行应用程序,它应该是这样的:
node index.js my-url=http://192.168.1.24:8984/api/ port=3000

在两种情况下的输出结果均为:
my-url=http://192.168.1.24:8984/api/
port=3000

但是如果你需要在路径之前使用它(例如 node -r esm index.js),那么它就不起作用了,因为它会把参数放在最后。 - dortonway

1

编辑 ./settings/launch.json 文件(调试菜单 > 齿轮图标)

您可以编辑 args 条目


目前我所能想到的唯一方法是创建一个 .bat(Windows)文件,手动添加所有必要的参数,然后在 ./settings/launch.json 中定义它作为 runtimeExecutable,但这看起来很奇怪。 - leximus

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