在VSCode的launch.json中,args和runtimeArgs有什么区别?

时间:2017-02-13 15:31:53

标签: node.js visual-studio-code vscode-settings

launch.json中的argsruntimeArgs之间有什么区别?

// Optional arguments passed to the runtime executable
"runtimeArgs": []
// Command line arguments passed to the program
"args": []

程序与运行时可执行文件不同吗?

问题背后的额外信息和动机:

我正在开发一个nodejs应用程序。在我的package.json中,我有一个start脚本:

"start": "electron ./src/Main/main.js arg2",在我的应用代码中,我访问了process.argv[2],这使我arg2,所以当我运行npm start时,我的应用就会按预期工作。

当我从VSCode运行应用程序时,它没有,原因是我没有在launch.json中提供任何其他参数。我应该把这些论点放在哪里? process.argv似乎包含argsruntimeArgs中提供的参数,但它也包含一些我不想要的--debug-brk参数。

当我从命令行(process.argv)运行应用程序或从VSCode启动应用程序时,我希望能够始终如一地使用npm start

2 个答案:

答案 0 :(得分:4)

我认为这主要在Node debugging docs

中解释
  

不是直接使用节点启动Node.js程序,而是使用  npm'脚本或其他任务运行工具直接来自启动配置:

     
      
  • PATH上可用的任何程序(例如' npm',' mocha',' gulp'等)都可用于runtimeExecutable属性[ ...]
  •   

runtimeExecutable不是您要调试的程序,而是用于运行它的可执行文件。因此runtimeArgs似乎runtimeExecutableargs {1}}是program

如果您对其详细工作方式感兴趣,here's debugAdapter.ts实施的相关部分。

答案 1 :(得分:0)

考虑以下示例:

         {

           "name": "vscode-jest-tests",
            "type": "node",
            "request": "launch",
            "program": "${workspaceFolder}/node_modules/jest-cli/bin/jest.js",
            "stopOnEntry": false,
            "args": [ 
                "--runInBand"                       
            ],
            "cwd": "${workspaceFolder}",
            "preLaunchTask": null,
            "runtimeExecutable": null,
            "runtimeArgs": [
                "--nolazy"
            ],
            "env": {
                "NODE_ENV": "development"
            },
            "console": "integratedTerminal",
            "internalConsoleOptions": "neverOpen",
            "disableOptimisticBPs": true
        }

=>设置“ NODE_ENV = development”和&“ C:\ Program Files \ nodejs \ node.exe” --nolazy --inspect-brk = 35238 node_modules \ jest-cli \ bin \ jest.js --runInBand < / p>

  • runtimeArg “-nolazy”出现在 node.exe后面(对应于类型)和

    < / li>
  • arg “-runInBand”出现在 jest.js的后面(对应于程序

    li>

如果删除属性“ program”,则参数将依次附加,并且看不到任何区别。