【问题标题】:Upgrading Node on an Azure website?在 Azure 网站上升级节点?
【发布时间】:2021-07-17 03:57:05
【问题描述】:

我正在尝试在 Azure 网站上使用 NPM 运行一些预部署任务(单元测试等),但是 VM 上的节点版本是 v0.10.32,当前节点版本是 v4.2.4。

我没有通过 SCM 网站访问命令行的非管理权限,没有 RDP 等。

有什么办法升级吗?

【问题讨论】:

    标签: node.js azure azure-web-app-service


    【解决方案1】:

    确保 Azure Web App 具有所需的节点版本。

    1. 转到 yoursite.scm.azurewebsites.net
    2. 选择调试控制台(PowerShell 或 CMD)
    3. 导航到D:\Program Files (x86)\nodejs
    4. 运行 dir 以查看可用的 nodejs 版本。

    例如,如果有一个名为6.3.0 的目录,那么您可以使用它。

    // App Setting
    WEBSITE_NODE_DEFAULT_VERSION 6.3.0  
    
    // package.json
    engines":{"node": "6.3.0"}
    

    【讨论】:

    • 这很有帮助,当我尝试升级时他们没有 6.10.1,但他们有 6.10.0
    • 这在 2017 年 11 月 3 日对我有用,不需要 iisnode.yml 文件。
    • ... 对于 node.js 角度应用程序。我将 VSTS 用于 git 存储库、构建和发布。该构建使用托管的 Visual Studio 2017,npm 安装 angular 和 node,命令行用于 ng 构建。它基于带有 Gulp VSTS 构建模板的 npm。该版本只是抓取工件并将其推送到 Azure。
    • 两年后工作......非常感谢您的详细回答,我希望我能多次投票。
    【解决方案2】:

    您可以使用 package.json 文件指定运行应用程序的节点版本。添加:

    "engines":{"node":version}
    

    例如:

    "engines":{"node": "0.12.x"}, 
    

    更多信息:https://azure.microsoft.com/en-us/documentation/articles/nodejs-specify-node-version-azure-apps/

    【讨论】:

    • 这是用来运行 NPM 任务的,这还能用吗?
    • 我在上一个项目中使用了它。然后当我调用 node -v 它报告了正确的节点版本号。
    • 确实,这应该可行。其他选项是更改 Azure 门户中的 WEBSITE_NODE_DEFAULT_VERSION 应用设置。
    • 在通过 VSTS 部署时,使用 package.json 文件指定节点版本似乎不起作用。有没有办法让它工作?
    • package.json 中更改engine 版本对我完全没有影响。当容器启动时,无论我在engine 中设置什么,它都会显示NodeJS Version : v12.19.0。将WEBSITE_NODE_DEFAULT_VERSION 设置为14v14 也无效。
    【解决方案3】:

    2017 年更新。以上所有对我都不起作用。

    我变了:

    // package.json
    engines":{"node": "8.0.0"}
    

    然后我添加了应用设置值

    <appSettings>
        <add key="WEBSITE_NODE_DEFAULT_VERSION" value="8.0.0" />
    </appSettings>
    

    我重新启动了一个应用百万次,解决方案是更改 iisnode.yml

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

    就是这样。我希望它会对某人有所帮助。

    更新

    澄清一下:我说的是应用服务

    如果您 ftp 到您的应用程序,您将在此处看到 iisnode.yml

    【讨论】:

    • 所以接受的答案不起作用?如果是这样,我会将您的更改为已接受的。
    • @JMK 不,它对我不起作用。也许从那时起他们改变了一些东西,我不确定。但是在我更改 iisnode.yml 之前,其他设置并没有改变任何东西。可能是因为我最初没有指定节点版本,所以它默认为 v0.10,到目前为止许多插件都不支持。
    • @PavelKovalev 你在哪里找到 iisnode.yml?我还没有找到可以在没有管理员权限的情况下编辑的副本。
    • @StephenGTuggy 我更新了我的答案并添加了一些图片。所以你必须 FTP 到你的应用服务,这样你才能看到 iisnode.yml
    • iisnode.yml 是一个可选文件,它会覆盖 web.config 文件中的设置。这意味着因为您拥有它,它必须指向正确的节点可执行文件,但对于其他所有人来说,它不一定是正确的答案。 github.com/tjanczuk/iisnode/blob/master/src/samples/…
    【解决方案4】:

    在 Azure 门户中更改 NodeJs 版本

    在 azure 门户中导航到您的 Web 应用 单击设置刀片中的应用程序设置。 您可以在应用设置中包含 WEBSITE_NODE_DEFAULT_VERSION 作为键和 nodejs 的版本作为值。

    示例:WEBSITE_NODE_DEFAULT_VERSION 8.0.0

    【讨论】:

    • 谢谢你我的朋友!!奥布里加多阿米戈!这里是巴西人!
    • 并确保您设置的版本受支持。您可以通过以下答案获取版本列表:stackoverflow.com/a/45515422/10893
    【解决方案5】:

    对我来说,解决方案既不是在package.json中设置engine版本,也不是设置WEBSITE_NODE_DEFAULT_VERSION,而是使用az command line as described here

    az webapp config set \
      --resource-group <resource-group-name> \
      --name <app-name> \
      --linux-fx-version "NODE|14-lts"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 2020-03-12
      • 1970-01-01
      • 2012-03-21
      相关资源
      最近更新 更多