web-dev-qa-db-ja.com

VSCodeからnpm runスクリプトを使用してデバッグする方法は?

以前にgulpを使用してgulpを実行し、アプリケーションとリスナーを Visual Studio Codeデバッガー から開始していましたが、最近npm代わりに。残念ながらVSCodeでは、デバッガを介してnpmスクリプトを実行できなかったため、実行に頼らなければなりませんでしたnodeサーバーを直接起動し、コードを自動的にリロードしたリスナータスクを取り除きます。

これは単純なことのように思えますが、今のところあまり運がありません。以下は、使用しようとしたが、npmが見つからなかったlaunch.jsonファイルの抜粋です。

{
    ...
        "program": "npm",
        "args": [
            "run",
            "debug"
        ],
    ...
}

これにより、次のエラーが発生します。

エラー要求「起動」:プログラム「c:\ myproject\npm」は存在しません

関連リソース:

38
jpierson

VS Codeは 2016年10月からのリリース でnpmスクリプトと他の起動シナリオをサポートするようです。

以下は、 GitHubで提案 の例です。

packages.json

  "scripts": {
    "debug": "node --nolazy --debug-brk=5858 myProgram.js"
  },

vscode launch config

{
    "name": "Launch via NPM",
    "type": "node",
    "request": "launch",
    "cwd": "${workspaceRoot}",
    "runtimeExecutable": "npm",
    "runtimeArgs": [
        "run-script", "debug"
    ],
    "port": 5858
}
26
jpierson
  1. .vscode/launch.jsonで新しいデバッグターゲットを構成します。

    {
        "name": "Attach To npm",
        "type": "node",
        "request": "attach",
        "port": 5858,
        "address": "localhost",
        "restart": false,
        "sourceMaps": false,
        "outDir": null,
        "localRoot": "${workspaceRoot}",
        "remoteRoot": null
    }
    
  2. --debug-brkオプションを使用してノードを実行するようにnpmを構成します。

    "scripts": {
      "start": "node app.js",
      "debug": "node --debug-brk app.js"
      ...
    
  3. 次のようにシェルからアプリを起動します。

     $npm run debug
    
  4. デフォルトでは、プログラムはデバッガーを接続するためにポート5858で待機します

  5. したがって、Visual Studioコードでデバッガーを実行します(「npmに接続」)。

  6. デバッガをお楽しみください:)

19
GutiMac

package.jsonscriptsセクションを変更せずにnpmで実行できます

ここでのコツは、--inspect-brk=9229をノードに渡すことです。

コマンドはnpm run start -- --inspect-brk=9229のようになります

.vscode/launch.jsonは次のとおりです。

{  
"version": "0.2.0",
"configurations": [
    {
        "type": "node",
        "request": "launch",
        "name": "Launch via NPM",
        "runtimeExecutable": "${env:NVM_BIN}/npm", //change this to your npm path
        "runtimeArgs": [
            "run-script",
            "start",
            "--",
            "--inspect-brk=9229"
        ],
         "port": 9229
    },

  ]
}
3
Tudor Ilisoi

GutiMacとJpiersonが提供するソリューションを試しましたが、何らかの理由でデバッガーをこれらのいずれでも動作させることができませんでした。

私のためにうまくいった代替ソリューション(Ubuntu 16、ノード8.9.1、VS 1.8.1)は、このシンプルなアプリランチャーを使用することです(VS launch.jsonの構成配列に追加されます):

{
  "type": "node",
  "request": "launch",
  "name": "Launch Node App",
  "program": "${workspaceFolder}/my-app/my-npm-start-script-dir/index.js"
}
2
claudod