在调试前尝试使用任务启动服务器时出现“无法跟踪指定的任务”

max*_*pre 10 visual-studio-code

我的 中有以下调试配置launch.json

{
    "type": "node",
    "request": "attach",
    "preLaunchTask": "npm: start",
    "name": "Attach",
    "port": 9090
}
Run Code Online (Sandbox Code Playgroud)

这是在tasks.json以下定义的任务:

{
    "type": "npm",
    "script": "start",
    "isBackground": true
}
Run Code Online (Sandbox Code Playgroud)

npm start 做这个: node --inspect=9090 ./src/server.js

如果我删除preLaunchTask调试配置,手动启动任务,然后启动调试会话,一切正常(调试会话附加节点进程)。

但是,使用preLaunchTask,我在启动调试后约 10 秒收到此错误:“无法跟踪指定的任务”。

似乎该任务在设置为 时可能需要一个问题匹配器isBackground,因此我也尝试了此任务配置但没有成功:

{
    "type": "npm",
    "script": "start",
    "isBackground": true,
    "problemMatcher": {
        "background": {
            "activeOnStart": true,
            "beginsPattern": "^.*Using environment.*",
            "endsPattern": "^.*listening.*"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

的输出 npm: start

5:13:12 PM web.1 |  Using environment: production
5:13:12 PM web.1 |  Already up to date
5:13:12 PM web.1 |  Debugger listening on ws://127.0.0.1:9090/22d582b8-eade-4b27-95f4-e36ad1718283
5:13:12 PM web.1 |  For help see https://nodejs.org/en/docs/inspector
Run Code Online (Sandbox Code Playgroud)

我需要问题匹配器吗?如果是这样,为什么?当我自己开始任务时,它工作正常。我没有任何问题要报告...

Joh*_*icz 5

由于任务长时间运行,等待10秒后Vscode会弹出警告提示无法跟踪指定任务。您仍然可以通过按“仍然调试”按钮进行调试。但是为了避免这个弹出窗口,我们定义了一个开始/结束模式。

problemMatcher 的 background 字段定义了任务被认为开始和结束的时间,如控制台输出中所示。您需要确保开始模式和结束模式与您在终端输出中实际看到的内容相匹配。如果您从其他地方复制了一个示例,它可能与您的实际终端输出不匹配。

我将模式定义更改为:

"background": {
   "activeOnStart": false,
   "beginsPattern": "^.*building.*",
   "endsPattern": "^.*Compiled successfully.*"
} 
Run Code Online (Sandbox Code Playgroud)

我遇到了和你一样的问题,直到我找到了这篇博文并修复了 tasks.json 中的模式。

还要检查本食谱中使用的模式。

PS:我一直在使用的示例在 beginPattern 中有“Live Development Server 正在监听”。但是这个文本直到弹出框显示后才会显示。