在 Visual Studio 代码中调试 strapi

Debugging strapi in Visual Studio Code

我正在尝试在 VS Code 中调试我的 strapi 项目 (3.0.0 beta 16.6)。 我的 launch.json:

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

我的package.json:

"scripts": {
    "debug": "node --inspect=127.0.0.1:9229 ./node_modules/strapi/bin/strapi.js develop"
}

调试器附加到进程,但我的所有断点都未验证(显示为黑色,而不是红色)。我的配置有什么问题?

问题已通过将端口号设置为 9203 解决:

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

但我不知道它是如何工作的...

此回答来自以下strapi/strapi issue

我想出了下一个解决方案: 在 server.js 文件中有下一个脚本(我的自定义脚本):

const strapi = require('strapi');
strapi({ dir: process.cwd(), autoReload: true }).start();

我正在通过下一个命令使用 nodemon:nodemon --inspect=0.0.0.0:9228 server.js

现在我可以通过调试器附加到 9228

只是添加到@alxnkt 评论中。 我遇到了同样的问题,通过将 launch.json 更改为端口 9230

解决了这个问题
{
  "type": "node",
  "request": "attach",
  "name": "Attach to strapi",
  "port": 9230
}

同时将 package.json 上的端口保持为 9229

"debug": "node --inspect=127.0.0.1:9229 ./node_modules/strapi/bin/strapi.js develop"

当调用 Strapi 开发命令(可能是管理面板及其核心服务器)时,不知何故有 2 个进程 运行,我们必须监视的进程变成了端口 9230。

您也可以使用 NODE_OPTIONS:

NODE_OPTIONS='--inspect' yarn strapi develop

您将获得:

$ NODE_OPTIONS="--inspect" yarn strapi develop
Debugger listening on ws://127.0.0.1:9229/8564942a-6476-443a-9f64-87fa6d0055b7
For help, see: https://nodejs.org/en/docs/inspector
yarn run v1.22.5
$ strapi develop
Starting inspector on 127.0.0.1:9229 failed: address already in use
Debugger listening on ws://127.0.0.1:9230/7da840dd-cb89-493f-8ce0-e11530efdfbb
For help, see: https://nodejs.org/en/docs/inspector

现在您可以使用调试:附加到节点进程附加到端口 9230。

.vscode/launch.json "configurations" 属性 和 运行

中添加 VS 配置“NODE:通过 npm 启动”
    {
      "type": "node",
      "request": "launch",
      "name": "Launch via NPM",
      "runtimeExecutable": "npm",
      "runtimeArgs": [
        "run-script",
        "develop"
      ],
      "port": 9229,
      "skipFiles": [
        "<node_internals>/**"
      ],
      "console": "integratedTerminal"
    }

我刚刚通过 NPM 启动了它,这是我的 launch.json(在 .vscode 文件夹中)

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch via NPM",
      "runtimeExecutable": "npm",
      "runtimeArgs": [
        "run-script",
        "develop"
      ],
      "port": 9229,
      "skipFiles": [
        "<node_internals>/**"
      ],
      "console": "integratedTerminal"
    }
  ]
}

使用 Strapi v4 这对我有用

{
    "version": "0.2.0",
    "configurations": [
     {
      "name": "STRAPI Debug",
      "type": "node",
      "request": "launch",
      "cwd": "${workspaceRoot}",
      "runtimeExecutable": "node",
      "runtimeVersion":"14.19.0",
      "runtimeArgs": ["--lazy"],
      "skipFiles": ["<node_internals>/**"],
      "program": "${workspaceRoot}/node_modules/@strapi/strapi/bin/strapi.js",
      "args": [
        "develop"
      ],
      "protocol": "inspector",
      "env": {
        "NODE_ENV": "development"
      },
      "autoAttachChildProcesses": true,
      "console": "integratedTerminal"
     },
    ]
}