【问题标题】:Azure App Service: node version in package.json do not workAzure 应用服务:package.json 中的节点版本不起作用
【发布时间】:2017-11-20 08:59:06
【问题描述】:

在我的节点 js Web 应用程序中,我使用节点版本 = 6.9.1:

  "engines": {
    "node": "6.9.1"
  }

当我进行部署时

git push azure master

它表明使用了正确的节点。

...
remote: Selected node.js version 6.9.1. Use package.json file to choose a different version.
remote: Selected npm version 3.10.8
...

但由于 node.exe 崩溃,我的应用服务未正确启动。 后来我在我的入口点脚本中输出使用的节点版本号,我得到了

Node version:v0.6.20

来自文件 D:\home\LogFiles\Application\xxxx-stdout-xxxx.txt

很明显,Azure App 服务没有使用我定义的 node.exe 版本。

后来我关注https://docs.microsoft.com/en-us/azure/nodejs-specify-node-version-azure-apps

在文件 D:\home\site\wwwroot\iisnode.yml 中添加以下文本以解决此问题。

nodeProcessCommandLine: "D:\Program Files (x86)\nodejs\6.9.1\node.exe"

所以我的问题是为什么 Azure App Service (iisnode) 没有使用我在 package.json 中定义的节点版本?

【问题讨论】:

标签: azure azure-web-app-service iisnode


【解决方案1】:

要使用 iisnode.yml 更改 Azure 应用服务的 NodeJs 版本(不会在 kudu cli 或部署期间更改节点版本),您需要在应用根文件夹中手动设置 iisnode.yml 文件,包括以下内容正如你提到的那样: nodeProcessCommandLine: "D:\Program Files (x86)\nodejs\5.9.1\node.exe"

然后您需要在源代码管理部署期间使用 package.json 设置 iisnode.yml 文件。 Azure 源代码管理部署过程将涉及以下步骤 1. 将内容移动到 azure web 应用程序 2. 创建默认部署脚本,如果在 web 应用根文件夹中没有(deploy.cmd、.deployment 文件) 3. 如果您在 package.json 文件 > 引擎中提到 nodejs 版本,则运行它创建 iisnode.yml 文件的部署脚本

参考:https://blogs.msdn.microsoft.com/azureossds/2016/04/20/nodejs-and-npm-versions-on-azure-app-services/

否则,您可以使用 Azure 门户中的应用设置来更改 NodeJs 的版本。

【讨论】:

  • 最后我摆脱了 package.json && iisnode.yml,它们是噩梦。我认为使用 WEBSITE_NODE_DEFAULT_VERSION 是最好的解决方案。
猜你喜欢
  • 2021-12-04
  • 2023-04-03
  • 2017-12-17
  • 2016-12-13
  • 2019-05-04
  • 2016-12-27
  • 1970-01-01
  • 2016-11-28
相关资源
最近更新 更多