Azure 的节点部署使用了错误的节点和 NPM

Azure's node Deploy uses wrong Node and NPM

当我部署到 Azure 网站时,节点 运行time 正确使用我在 package.json 中配置的 Nodejs,但是部署脚本使用服务器路径上的节点和 NPM。 (服务器路径混乱,路径中有两个节点版本。)

例如。我想要 nodejs 4.2.1 和 NPM >2

当我部署应用程序时,它使用 0.10.x 和 NPM 1.x.x。我的 rxjs 模块需要 NPM > 2,因此无法加载。

如果我部署避开包,我可以看到正确的 运行时间是 运行。

有办法解决这个问题吗?

您可以在Azure manage portal中简单地自定义nodejs版本。

在您的网站门户的 CONFIGUE 选项卡中,在 APP SETTINGS 部分下,nodejs 版本设置为 WEBSITE_NODE_DEFAULT_VERSION为Azure默认的0.10.32,我们可以直接将它的值改成你想要的4.2.1

修改网站设置后,点击底部导航栏的重启按钮。

登录您的KUDU控制台站点,您可以在cmdlet中查看nodejs版本。(站点URL应该是:https://{your site name}.scm.azurewebsites.net/DebugConsole

修改后nodejs版本为4.2.1,npm版本为3.3.9

您可以在 Specifying a Node.js version in an Azure application 获得更多信息。

还有至少 two other mentions 各种来源声称可以通过 package.js 进行设置:

  "engines": {
    "node": ">= 8.2.0 || 8.x.x",
    "npm": ">= 5.3.0 || 5.x.x"
  },

或通过网站根目录中的iisnode.yaml文件。哪一个能解决问题真的很难发现,因为您只能在应用程序运行时正确判断节点版本。