我正在开发简单的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
答案 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扩展名被破坏了。当我无法重现您的问题时,您可以尝试一下。
重新安装扩展程序的步骤:
https://<functionappname>.scm.azurewebsites.net/DebugConsole
并导航至D:\home\site\wwwroot
。 bin
和extension.csproj
。