You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Web Service配置Node.js 18但部署用v16导致失败求助

部署Azure Web Service时Node.js版本不符问题排查

问题背景

我尝试用Node.js v18部署Azure Web Service,已完成以下配置:

  • 在「设置>配置」中设置运行时为Node.js v18;
  • 执行命令 az webapp config show --resource-group <RG-name> --name <ServiceName> --query linuxFxVersion,返回 "NODE|18.20.1",确认版本为v18;
  • 容器拉取日志显示使用18-lts镜像:
2024-08-12T17:08:30.841Z INFO - 18-lts_20220228.1.tuxprod Pulling from appsvc/node
2024-08-12T17:08:30.852Z INFO - Digest: sha256:151be8808b6230b7f1d902cf9fb20cd796016a00bd9a32c45910d6a5fe6c473c
2024-08-12T17:08:30.852Z INFO - Status: Image is up to date for 10.1.0.4:13209/appsvc/node:18-lts_20220228.1.tuxprod
2024-08-12T17:08:30.864Z INFO - Pull Image successful, Time taken: 0 Seconds
2024-08-12T17:08:30.904Z INFO - Starting container for site
2024-08-12T17:08:30.905Z INFO - docker run -d --expose=8080 --name ......

但实际部署日志显示Node.js版本为v16.13.1,导致部署失败:

2024-08-12T16:18:09.714643966Z   _____                               
2024-08-12T16:18:09.714690368Z   /  _  \ __________ _________   ____  
2024-08-12T16:18:09.714696968Z  /  /_\  \___   /  |  \_  __ \_/ __ \ 
2024-08-12T16:18:09.714701869Z /    |    \/    /|  |  /|  | \/\  ___/ 
2024-08-12T16:18:09.714706569Z \____|__  /_____ \____/ |__|    \___  >
2024-08-12T16:18:09.714711469Z         \/      \/                  \/ 
2024-08-12T16:18:09.714716169Z A P P   S E R V I C E   O N   L I N U X
2024-08-12T16:18:09.714720869Z 
2024-08-12T16:18:09.714725270Z Documentation: http://aka.ms/webapp-linux
2024-08-12T16:18:09.714729770Z NodeJS quickstart: https://aka.ms/node-qs
2024-08-12T16:18:09.714734270Z NodeJS Version : v16.13.1 <--------
2024-08-12T16:18:09.714738770Z Note: Any data outside '/home' is not persisted
2024-08-12T16:18:09.714743271Z 
2024-08-12T16:18:09.965438943Z Starting periodic command scheduler: cron.
2024-08-12T16:18:10.058709071Z Cound not find build manifest file at '/home/site/wwwroot/oryx-manifest.toml'
2024-08-12T16:18:10.058795475Z Could not find operation ID in manifest. Generating an operation id...
2024-08-12T16:18:10.058804876Z Build Operation ID: fa38d167-796d-4f30-af51-d11537e25846
2024-08-12T16:18:10.281955010Z Environment Variables for Application Insight's IPA Codeless Configuration exists..
2024-08-12T16:18:10.289068956Z Writing output script to '/opt/startup/startup.sh'
2024-08-12T16:18:10.310169580Z Running #!/bin/sh
2024-08-12T16:18:10.310198181Z 
2024-08-12T16:18:10.310205082Z # Enter the source directory to make sure the script runs where the user expects
2024-08-12T16:18:10.310211182Z cd "/home/site/wwwroot"
2024-08-12T16:18:10.310216482Z 
2024-08-12T16:18:10.310222183Z export NODE_PATH=/usr/local/lib/node_modules:$NODE_PATH
2024-08-12T16:18:10.310227883Z if [ -z "$PORT" ]; then
2024-08-12T16:18:10.310233183Z      export PORT=8080
2024-08-12T16:18:10.310238583Z fi
2024-08-12T16:18:10.310243784Z 
2024-08-12T16:18:10.310248984Z PATH="$PATH:/home/site/wwwroot" bash /home/site/wwwroot/start-dev.sh
2024-08-12T16:18:10.326757685Z Starting custom deployment script...
2024-08-12T16:18:10.354607138Z Expected: v18.20.1
2024-08-12T16:18:10.366245803Z Actual: v16.13.1

请问我忽略了什么配置?


可能的遗漏配置项

  1. 检查项目本地Node版本锁定文件

    • 代码目录中如果存在 .nvmrc、.node-version 或者 package.json 里的 engines.node 字段,Azure的构建工具Oryx会优先使用这些文件指定的版本,而非全局配置的运行时版本。若这些文件指定了v16.13.1,就会导致部署时使用该版本。
    • 解决:更新这些文件中的版本号为 18.x 或具体的 18.20.1。
  2. 检查启动脚本中的Node路径

    • 启动脚本 start-dev.sh 可能硬编码了Node的路径,或者使用了项目本地安装的Node版本(比如通过nvm安装在/home目录下的v16)。
    • 解决:修改start-dev.sh,确保调用系统全局的Node(通常路径为/usr/local/bin/node),或者显式指定使用v18版本的Node。
  3. 检查应用设置中的环境变量

    • 查看Azure Web Service的「设置>配置>应用程序设置」,是否存在 NODE_VERSION 环境变量。若该变量被设置为16.13.1,会覆盖全局的运行时配置。
    • 解决:删除该环境变量,或者将其值改为18.20.1。
  4. 清理旧的部署缓存

    • Azure Web Service可能缓存了之前使用v16版本构建的依赖或脚本,导致新部署时仍使用旧版本。
    • 解决:在Azure门户的「部署中心」选择「高级」选项,点击「清理」按钮清除缓存,然后重新部署。

内容的提问来源于stack exchange,提问作者Michael Seltenreich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 18:52:01