web-dev-qa-db-ja.com

VSCodeのlaunch.jsonのargsとruntimeArgsの違いは何ですか?

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には、argsまたはruntimeArgsのいずれかで提供される引数が含まれているようですが、--debug-brk引数にも固執しています。

コマンドライン(process.argv)からアプリを実行するとき、またはVSCodeからアプリを起動するときに、npm startを一貫して使用できるようにしたい。

14
pushkin

これは主に ノードデバッグドキュメント で説明されていると思います:

Node.jsプログラムをノードで直接起動する代わりに、起動構成から直接「npm」スクリプトまたは他のタスクランナーツールを使用できます。

  • PATHで利用可能な任意のプログラム(たとえば、「npm」、「mocha」、「gulp」など)をruntimeExecutable属性に使用できます[...]

runtimeExecutableはデバッグしたいプログラムではありませんが、それを実行するために使用された実行可能ファイルです。したがって、runtimeArgsruntimeExecutableに対して、argsprogramに対してです。

それがどのように詳細に機能するかに興味がある場合は、 ここにdebugAdapter.ts実装の関連部分。

5
Gama11

次の例を検討してください。

         {

           "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
        }

=> set "NODE_ENV = development" && "C:\ Program Files\nodejs\node.exe" --nolazy --inspect-brk = 35238 node_modules\jest-cli\bin\jest.js --runInBand

  • runtimeArg "--nolazy"が発生しますbehind node.exe(typeに対応)および

  • arg "--runInBand"が発生しますbehind jest.js(programに対応)

属性「program」を削除すると、引数が次々に付加され、違いは見られません。

0
Stefan