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

时间:2018-12-22 22:18:39

标签: visual-studio-code

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

{
    "type": "node",
    "request": "attach",
    "preLaunchTask": "npm: start",
    "name": "Attach",
    "port": 9090
}

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

{
    "type": "npm",
    "script": "start",
    "isBackground": true
}

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.*"
        }
    }
}

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

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

2 个答案:

答案 0 :(得分:2)

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

problemMatcher的背景字段定义了何时将任务视为开始和结束,如控制台输出所示。您需要确保beginPattern和EndsPattern与您在终端输出中实际看到的匹配。如果您从其他地方复制示例,则该示例可能与您的实际终端输出不匹配。

我将模式定义更改为:

"background": {
   "activeOnStart": false,
   "beginsPattern": "^.*building.*",
   "endsPattern": "^.*Compiled successfully.*"
} 

在找到this blog post并修复task.json中的模式之前,我遇到了与您相同的问题。

还要检查此recipe中使用的模式。

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

答案 1 :(得分:1)

看你的需求,对我来说,我只是去掉了preLaunchTask,因为在这个项目中它没有用,然后提示就消失了。

// A launch configuration that compiles the extension and then opens it inside a new window
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Run Extension",
      "type": "extensionHost",
      "request": "launch",
      "args": ["--extensionDevelopmentPath=${workspaceFolder}"],
      "outFiles": ["${workspaceFolder}/dist/**/*.js"]
      // REMOVED
      // "preLaunchTask": "${defaultBuildTask}"
    },
    {
      "name": "Extension Tests",
      "type": "extensionHost",
      "request": "launch",
      "args": [
        "--extensionDevelopmentPath=${workspaceFolder}",
        "--extensionTestsPath=${workspaceFolder}/out/test/suite/index"
      ],
      "outFiles": ["${workspaceFolder}/out/test/**/*.js"],
      "preLaunchTask": "npm: test-watch"
    }
  ]
}