我无法在Azure中更改节点的版本

时间:2019-12-05 16:06:13

标签: node.js azure azure-web-sites

我正在Azure上运行节点服务器,由于它是0.8.28,因此需要更改节点的默认版本,或为应用程序设置特定版本。

我第一次想到可以使用部署文件(deploy.cmd)和package.json来指定版本,如下所示;

deploy.cmd

:: Force use of the latest NPM
SET NPM_JS_PATH=%ProgramFiles(x86)%\npm\6.12.0\node_modules\npm\bin\npm-cli.js
SET NODE_PATH=%ProgramFiles(x86)%\nodejs\8.9.4\node.exe

package.json

"engines": {
  "node": "8.9.4",
  "npm": "6.12.0"
},

部署该应用程序时,它显示已设置指定的版本。

2019-12-05T15:36:17    Selected node.js version 8.9.4. Use package.json file to choose a different version.
2019-12-05T15:36:17    Selected npm version 6.12.0
2019-12-05T15:36:17    Updating iisnode.yml at D:\home\site\wwwroot\App_Data\config\scripts\iisnode.yml

这就是为什么我期望该应用程序将在node@8.9.4上运行,但是当我控制台 process.version 时,它仍然是0.8.28。 部署结束时,该版本看起来像是默认版本的覆盖。

此外,我尝试在“配置”(“设置”>“配置”>“ WEBSITE_NODE_DEFAULT_VERSION”)中编辑WEBSITE_NODE_DEFAULT_VERSION变量,但由于主机名不包含“ azurewebsites.net”,所以无法保存。

是否可以指定节点版本或编辑WEBSITE_NODE_DEFAULT_VERSION?

1 个答案:

答案 0 :(得分:0)

  

您的应用程序的节点版本   Kudu需要知道您要运行应用程序和部署的节点版本。它将按照以下步骤尝试找到所需的版本。如果不满意,请转到下一步:

  1. 如果其中包含iisnode.yml和nodeProcessCommandLine属性:它将运行节点的确切路径。
  2. 如果您的package.json中有一个“ engines”:{“ node”:version}规范,则Azure将使用指定的版本
  3. 在Azure门户的“应用程序设置”中,将WEBSITE_NODE_DEFAULT_VERSION设置为环境变量之一
  4. Azure的默认节点版本。确切的版本会随时间变化。

我认为iisnode.yml没有您需要的节点版本。创建iisnode.yml并在下面添加

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

更多详细信息,请点击此处