Каков правильный способ отладки сценария npm с помощью vscode?

у меня есть сценарий npm, который я пытаюсь отладить. Я использую vscode, поэтому я думал, что создам конфигурацию отладки и пройду через нее с отладчиком.

мой сценарий npm выглядит так:

"scripts": {
    ...
    "dev": "node tasks/runner.js",
}

поэтому я создал следующую конфигурацию отладки:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "runtimeExecutable": "npm",
            "cwd": "${workspaceRoot}",
            "runtimeArgs": [
                "run", "dev"
            ],
            "port": 5858,
            "stopOnEntry": true
        }
    ]
}

и когда я запускаю его, скрипт запускается, но vscode никогда не может подключиться, и я получаю ошибку:

не удается подключиться к среде выполнения по протоколу "legacy"; рассмотрите возможность использования "inspector" протокол (тайм-аут после 10000 МС).

Я попытался добавить протокол инспектора:

       {
            "type": "node",
            "request": "attach",
            "name": "Attach (Inspector Protocol)",
            "port": 9229,
            "protocol": "inspector"
       }

и запуск сценария npm через:

npm run dev --inspect

и на этот раз я получаю сообщение об ошибке:

убедитесь, что узел был запущен с --inspect. Не удается подключиться к процессу выполнения, тайм-аут после 10000 МС - (причина: не удается подключиться к цели: connect ECONNREFUSED 127.0.0.1: 9229).

Я не уверен, что я пропал.

редактировать на дубликат тега

Я вижу другой вопрос re: отладка сценария npm через vscode, но детали в другом вопросе и ответах не так детализированы и конкретны. Если кто-то ищет конкретные сообщения об ошибках vscode, с которыми я столкнулся, или тип конфигурации, который у меня был, они не обязательно получат детали ответа уровня, которые дает выбранный ответ этого вопроса.

1 ответов


вы не должны пытаться отладить npm script потому что вы действительно хотите прикрепить отладчик к скрипту, который запускается с помощью команды npm run (NPM здесь используется только как бегун задачи).

{
  "version": "0.2.0",
  "configurations": [
      {
        "type": "node",
        "request": "launch",
        "name": "Launch Program",
        "program": "${workspaceRoot}/tasks/runner.js"
      }
  ]
}

если вы действительно хотите запустить его с помощью сценария npm, вы можете использовать следующую конфигурацию:

{
  "type": "node",
  "request": "launch",
  "name": "Launch via NPM",
  "runtimeExecutable": "npm",
  "windows": {
    "runtimeExecutable": "npm.cmd"
  },
  "runtimeArgs": [
    "run-script",
    "dev"
  ],
  "port": 5858
}

но вы также должны изменить команда скрипта (укажите порт отладки)

  "scripts": {
    "dev": "node --nolazy --debug-brk=5858 tasks/runner.js"
  },

вы можете исследовать различные отладки конфигурации, просто нажав на значок шестеренки и выбрав один.

enter image description here

подробнее об узле.отладку js можно найти в VS код документации.