Azure Function Runtime版本:2.0.11888.0(beta)变得无法连接到cosmosDB

时间:2018-06-27 02:31:47

标签: node.js azure azure-functions azure-cosmosdb

我正在开发简单的node.js代码,以便使用http触发功能通过Azure函数应用程序将新文档插入cosmosDB。只需从http的参数获取输入值,然后输出到cosmosDB(SQL api)。大约过去两周,它已成功运行,但现在面临内部服务器错误。这就是为什么?是否会影响azure函数的运行时次要版本更新?

-> function.json

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req"
    },
    {
      "name": "outputDocument",
      "type": "cosmosDB",
      "databaseName": "ToDoList",
      "collectionName": "Items",
      "createIfNotExists": true,
      "connectionStringSetting": "COSMOSDB_CONNECTION",
      "direction": "out"
    }
  ]
}

-> index.js

module.exports = function (context, req) {

    context.bindings.outputDocument = JSON.stringify({ 
        name: req.query.name
    });

    context.done();
};

->浏览错误 INTERNAL SERVER ERROR

1 个答案:

答案 0 :(得分:1)

是的,函数运行时更新(从2.0.11857开始)对JavaScript函数具有重大变化。参见此issue comment

  

我们将不再支持Node v6,这可能会影响已部署的功能应用程序。请在“应用程序设置”中将WEBSITE_NODE_DEFAULT_VERSION更改为> = 8.4.0(例如:8.11.1)的8.x版本。

进行了一些测试,如果我将WEBSITE_NODE_DEFAULT_VERSION保留为6.5.0,则确实会导致内部服务器错误。

2.0.11857发行之前,v1和v2函数中的WEBSITE_NODE_DEFAULT_VERSION均为6.5.0。之后,当我们将功能运行时从〜1升级到Beta时,WEBSITE_NODE_DEFAULT_VERSION会自动更改为8.11.1

更新

更改节点版本对您不起作用,可能是因为cosmosdb扩展名被破坏了。当我无法重现您的问题时,您可以尝试一下。

重新安装扩展程序的步骤:

  1. 停止功能应用程序。
  2. 访问https://<functionappname>.scm.azurewebsites.net/DebugConsole并导航至D:\home\site\wwwroot
  3. 删除文件夹binextension.csproj
  4. 返回功能门户并创建一个cosmosdb触发器以再次安装扩展。
  5. 启动您的功能应用进行测试。