【问题标题】:Cannot run Azure Durable Function locally via Visual Studio Code无法通过 Visual Studio Code 在本地运行 Azure Durable Function
【发布时间】:2019-05-17 15:22:47
【问题描述】:

我按照教程Visual Studio Code quickstart 并在本地创建了一个持久函数。当我的持久函数在启动函数中执行 await client.startNew 时,我收到一条错误消息

const instanceId = await client.startNew(req.params.functionName, undefined, req.body);

这里是错误信息:

已执行“Functions.HttpTrigger”(失败, id=84dc103d-bef9-4450-b4c6-9e612c6dc263) System.Private.CoreLib: 执行函数时出现异常:Functions.HttpTrigger。 System.Private.CoreLib:结果:失败异常:错误:写入 EPROTO 101057795:错误:140770FC:SSL 例程:SSL23_GET_SERVER_HELLO:未知 协议:openssl\ssl\s23_clnt.c:827:堆栈:错误:写入 EPROTO 101057795:错误:140770FC:SSL 例程:SSL23_GET_SERVER_HELLO:未知 协议:openssl\ssl\s23_clnt.c:827: 在 _errnoException (util.js:992:11) 在 WriteWrap.afterWrite [as oncomplete] (net.js:864:14)。

我的环境:

  • Azure Functions 核心工具 (2.3.148)
  • 函数运行时版本(2.0.12210.0)
  • Node.js 8

这是我刚刚从教程中复制的代码。

const df = require("durable-functions");
module.exports = async function (context, req) {
        const client = df.getClient(context);
        const instanceId = await client.startNew(req.params.functionName, undefined, req.body);

        context.log(`Started orchestration with ID = '${instanceId}'.`);

        return client.createCheckStatusResponse(context.bindingData.req, instanceId);
    };

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "route": "orchestrators/{functionName}",
      "methods": ["post"]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "name": "starter",
      "type": "orchestrationClient",
      "direction": "in"
    }
  ]
}

我该如何解决这个问题?

【问题讨论】:

    标签: node.js azure visual-studio-code azure-functions azure-durable-functions


    【解决方案1】:

    更新

    npm package durable-functions v1.1.3 后问题已修复


    你遇到了known issue

    这是由于 current IWebHookProvider implementation 导致 DurableOrchestrationClient 类使用错误的 webhook URL。解决方法是将本地环境变量 WEBSITE_HOSTNAME 设置为 localhost:,例如。本地主机:7071

    如果在设置 env 之前已经打开了 VS Code,不要忘记重新启动它以使新的 env 变量生效。

    【讨论】:

    • 感谢您的帮助。现在我的函数可以通过解决方法在本地运行
    • 上面链接的 github 问题现在被标记为已解决(从 1.1.3 版开始)。
    【解决方案2】:

    只是总结一下我做了什么,以防有人遇到同样的问题。

    在 Windows 10 中

    1. 在终端输入指令设置环境变量

      setx WEBSITE_HOSTNAME "localhost:7071"

    2. 关闭 vs 代码并重新启动它

    【讨论】:

    • 在 MacOS 上添加 export WEBSITE_HOSTNAME=localhost:7071 到 ~/.bashrc
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 2018-10-01
    相关资源
    最近更新 更多