无法通过Visual Studio Code在本地运行Azure持久功能

时间:2018-12-17 09:22:59

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

我遵循了教程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上[作为oncomplete](net.js:864:14)。

我的环境:

  • Azure函数核心工具(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"
    }
  ]
}

如何解决此问题?

2 个答案:

答案 0 :(得分:3)

更新

自npm软件包durable-functions v1.1.3起已解决此问题


您遇到了known issue

  

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

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

答案 1 :(得分:2)

只是总结了我在有人遇到相同问题的情况下所做的事情。

在Windows 10中

  1. 在终端中键入指令以设置环境变量

    setx WEBSITE_HOSTNAME“ localhost:7071”

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