Vscode 调试器 - 当进程通过 pm2 重新启动时自动附加

Vscode debugger - auto-attach when process restarts through pm2

我正在尝试使用不同的环境来调试 nodejs 应用程序。我 运行 这个应用程序使用 pm2,带有 --watch 标志,这样我的应用程序在文件被更改/保存时重新启动。相关脚本如下:

"start": "node --inspect -r tsconfig-paths/register -r ts-node/register ./src/server.ts",
"launch": "pm2 start pm2.config.js",

我的 pm2.config.js 看起来像这样:

module.exports = {
    apps: [
        {
            name: 'myapp',
            script: 'npm',
            args: 'start',
            watch: ['src'],
        },
    ],
};

到目前为止,我一直在 chrome 节点检查器中进行调试。我还使用 chrome 扩展 NodeJS Inspector Manager,这是节点检查器的一个很好的包装器。它有一个很好的UI,你可以看到有自动附加和自动恢复的选项:

启用这些后,每当我在项目中保存文件时,pm2 都会重新启动应用程序。 NiMs 自动分离并重新附加到 运行 应用程序,我有一个交互式 chrome 检查器调试环境,通过应用程序重启刷新。

我想在 vscode 调试器中重现这种效果。我可以通过 pm2 手动启动附加到我的应用程序 运行 的调试会话。在 Debugging With PM2 And Vscode 的一些帮助下,我能够指示 vscode 调试器通过 pm2 附加到我的应用程序 运行。但是,当我保存文件时,pm2 会重新启动进程,并且 vscode 调试器会分离,但不会重新附加。

NiMs 有一个 vscode extension,但据我所知,它在 vscode 中提供的功能似乎与在 chrome 中提供的功能不同。

有没有办法设置 vscode 调试器附加到 pm2 进程,并在进程重启时自动重启(在同一个调试器端口上)?

要让 vscode 调试器自动重新附加,您可以将标志 restart 添加到您的配置中:

{
  "name": "Attach to node",
  "type": "node",
  "request": "attach",
  "restart": true,
  "port": 9229
}

来源:https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_restarting-debug-sessions-automatically-when-source-is-edited