运行旧版NPM的Azure App Services如何升级NPM版本?
Azure App Service Node v14环境NPM版本升级方案
完全可以在该环境下完成NPM版本升级,此前操作未生效的原因如下:
Azure App Service Linux运行环境中,预装的Node.js及对应NPM位于系统级路径
/usr/local/bin,使用sudo执行全局安装的NPM会默认写入系统其他目录,不加sudo的全局安装会写入用户级NVM路径/usr/local/nvm/versions/node/[对应v14版本号]/bin。由于系统路径优先级默认高于用户路径,执行npm命令时会优先调用预装的6.14版本,导致升级看似未生效。
操作步骤
方案1:SSH会话内临时生效
仅在当前SSH连接窗口生效,断开重连后会恢复默认版本:
- 执行升级命令,不要加sudo:
npm install -g npm@8
注:Node v14最高兼容NPM 8.x版本,升级到更高版本会出现兼容性报错
- 调整当前会话PATH优先级,将用户安装的NPM路径前置:
export PATH=/usr/local/nvm/versions/node/$(node -v)/bin:$PATH - 验证版本:
npm -v
方案2:永久生效(应用重启后仍保留)
- 在项目根目录新建初始化脚本
npm_init.sh,写入以下内容:
#!/bin/bash npm install -g npm@8 --silent export PATH=/usr/local/nvm/versions/node/$(node -v)/bin:$PATH # 替换为你项目的实际启动命令,如node server.js npm start
- 进入Azure App Service门户,依次打开「配置」->「常规设置」->「启动命令」,填写:
bash /home/site/wwwroot/npm_init.sh - 保存配置并重启应用即可。
注意事项
- 不要使用sudo执行npm全局安装命令,会导致文件权限异常,且安装路径与用户路径不匹配无法被优先调用
- 生产环境建议指定确定的NPM版本安装,避免latest标签拉取到不兼容的版本
内容的提问来源于stack exchange,提问作者jcdsr
相关产品推荐
相关产品推荐

