gpt4 book ai didi

node.js - 如何在Azure上升级nodejs版本

转载 作者:搜寻专家 更新时间:2023-10-31 22:58:50 25 4
gpt4 key购买 nike

目前,我默认定义了 Azure 函数和 Node.js 版本 6.5.0。目标是升级它。我检查了 Azure 上可用的 Node.js 版本列表,最新的版本是 8.9.4。我读过一些documentation关于它,其中提到了两种方法。

1) package.json

将以下配置放入package.json文件

"engines": {
"node": "8.9.4"
}

所以我做到了,但没有成功。

2) 应用程序设置

转到“应用程序设置”,并将 WEBSITE_NODE_DEFAULT_VERSION 的值更新为 8.9.4

此方法有 3 个问题:

  • 在函数中记录 process.version 显示 6.11.0。我不知道为什么...
  • 事实上,它是 Node.js 8.9.4,但一些 ES6 功能(例如异步箭头函数)会引发错误
  • 每次运行无服务器部署命令时,它都会重新创建服务并将WEBSITE_NODE_DEFAULT_VERSION值重置为默认值,即6.5.0
<小时/>

Azure Functions 的另一个问题:当我部署更改的函数时,Azure 门户 Web UI 仍然显示未更新的函数(旧函数),而该函数的新版本正在那里运行。奇怪...

如果你们中有人遇到这些问题,请告诉我,也许有人知道原因甚至解决方案。谢谢。

最佳答案

logging process.version in function shows me 6.11.0.

正如 @David 所说,Azure Functions 运行时 v1( ~1 ) 将您的 Node 版本锁定在 v6.11

更改时WEBSITE_NODE_DEFAULT_VERSION8.9.4 ,您还需要更改运行时版本 FUNCTIONS_EXTENSION_VERSIONbeta在您的应用程序设置中。

(请注意,运行时切换可能会导致重大更改,如果发生错误,您可以创建一个新的函数应用。)

第一种方法使用 package.json在我的测试中不起作用。

some ES6 features like async arrow functions throws an error

Node 版本更新成功后,async arrow functions在我的测试中也运行良好。

each time I run serverless deploy command it recreates service and resets WEBSITE_NODE_DEFAULT_VERSION value to default one

serverless deploy是部署整个服务的命令。因此,看到重新创建(回到默认 v6.5)是正常的,因为您的 yml 文件中没有 Node 版本的参数。

为避免这种情况,请使用 serverless deploy -f <functionname>部署特定功能而不是整个应用程序。

When I deploy a function with changes, Azure Portal web ui still shows me not updated function (old one), while new version of that function is running there

同样的事情也发生在我身边。我发现脚本可以在应用服务编辑器中正确显示。但在portal和kudu中,更新无法显示。我还检查了 kudu 中的日志文件,它说 Script for function 'functionname' changed. Reloading.

已开通issue在 github 上讨论我们遇到的最后一个问题。

关于node.js - 如何在Azure上升级nodejs版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49764571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com