launch.json中的args
和runtimeArgs
之间有什么区别?
// 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
似乎包含args
或runtimeArgs
中提供的参数,但它也包含一些我不想要的--debug-brk
参数。
当我从命令行(process.argv
)运行应用程序或从VSCode启动应用程序时,我希望能够始终如一地使用npm start
。
答案 0 :(得分:4)
我认为这主要在Node debugging docs:
中解释不是直接使用节点启动Node.js程序,而是使用  npm'脚本或其他任务运行工具直接来自启动配置:
- PATH上可用的任何程序(例如' npm',' mocha',' gulp'等)都可用于runtimeExecutable属性[ ...]
runtimeExecutable
不是您要调试的程序,而是用于运行它的可执行文件。因此runtimeArgs
似乎runtimeExecutable
为args
{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”,则参数将依次附加,并且看不到任何区别。