首页 > 解决方案 > 无法在 VSCode 中调试 Azure Functions 核心工具

问题描述

我目前无法在 VS Code 中调试我的 Azure Functions Core Tools。我正在使用 npm 包azure-functions-core-tools@2。正如我在许多资源上阅读的那样func host start/func start应该始终以--inspect=9229. 如您所见,在我的设置中并非如此:

[4/30/19 4:51:25 AM] Starting language worker process:node  "/usr/lib/node_modules/azure-functions-core-tools/bin/workers/node/dist/src/nodejsWorker.js" --host 127.0.0.1 --port 50426 --workerId 3e909143-72a3-4779-99c7-376ab3aba92b --requestId 656a9413-e705-4db8-b09f-da44fb1f991d --grpcMaxMessageLength 134217728
[4/30/19 4:51:25 AM] node process with Id=92 started
[4/30/19 4:51:25 AM] Generating 1 job function(s)
[...]
[4/30/19 4:51:25 AM] Job host started
Hosting environment: Production

此外,所有更改托管环境的尝试都失败了。我试图添加FUNCTIONS_CORETOOLS_ENVIRONMENT到我的本地配置,导致错误:

An item with the same key has already been added. Key: FUNCTIONS_CORETOOLS_ENVIRONMENT

我尝试使用--debug更改项目设置在启动和任务设置中添加几个环境变量。没有任何效果。

我目前在 Linux 的 Windows 子系统 (WSL) 上运行它,除此之外它运行得非常好。

有人知道我在这里做错了什么吗?

标签: azurevisual-studio-codeazure-functionsazure-functions-core-tools

解决方案


我不认为默认情况下启用调试。您必须设置语言工作者参数才能使其按文档说明工作。

  1. local.settings.json

    要在本地调试,请在 local.settings.json 文件中添加"languageWorkers:node:arguments": "--inspect=5858"Values并将调试器附加到端口 5858。

  2. 使用funcCLI
    您可以使用--language-worker参数进行设置

func host start --language-worker -- --inspect=5858
  1. 在 VS Code
    中如果您使用 VS Code 和 Azure Functions 扩展进行开发,--inspect则会自动添加.vscode/tasks.json
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "runFunctionsHost",
      "type": "shell",
      "command": "func host start",
      "isBackground": true,
      "presentation": {
        "reveal": "always"
      },
      "problemMatcher": "$func-watch",
      "options": {
        "env": {
          "languageWorkers__node__arguments": "--inspect=5858"
        }
      },
      "dependsOn": "installExtensions"
    },
    {
      "label": "installExtensions",
      "command": "func extensions install",
      "type": "shell",
      "presentation": {
        "reveal": "always"
      }
    }
  ]
}

如果您愿意,也可以直接设置此环境变量,而不是添加它local.settings.json


推荐阅读