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

如何将Azure AppSettings传递到Linux App Service上运行的NodeJS应用

解决步骤

1. 修正环境变量名的大小写匹配

Azure Linux App Service的Application Settings注入到运行时环境时,会自动将所有配置名转为全大写+下划线分隔的格式,你配置的DB_Host会被转为DB_HOST,代码中直接读取process.env.DB_Host无法匹配到对应值,需要将代码中的变量名改为全大写:
process.env.DB_HOST

2. 调整NestJS配置模块的加载规则

如果你使用@nestjs/config管理配置,默认会优先读取项目内的.env文件,覆盖Azure注入的系统环境变量,建议生产环境关闭本地.env文件读取:

// app.module.ts 中 ConfigModule 初始化配置
ConfigModule.forRoot({
  ignoreEnvFile: process.env.NODE_ENV === 'production', // 生产环境忽略本地.env,优先读系统环境变量
  isGlobal: true
})

3. 排查代码中的变量引用错误

如果报错直接输出process.env.DB_Host字符串,说明你大概率在代码中将变量放在了引号中,属于语法错误:

// 错误写法:引号包裹后会被识别为普通字符串
const dbHost = 'process.env.DB_Host'
// 正确写法:去掉引号直接读取环境变量
const dbHost = process.env.DB_HOST

4. 验证环境变量注入结果

你可以直接进入App Service的SSH控制台,执行命令printenv | grep DB_,确认是否存在DB_HOST=mysqlserveraddress的输出,即可判断Azure侧是否已经正确注入配置:

  • 如果控制台能查到对应变量,说明问题出在应用代码的配置读取逻辑,按上述步骤排查即可
  • 如果控制台查不到对应变量,检查Azure门户中Application Settings的配置是否保存成功,是否部署到了对应的部署槽位

5. 自定义镜像部署额外检查

如果你使用自定义Docker镜像部署,确保Dockerfile中没有用ENV指令定义同名变量,Dockerfile中定义的ENV优先级高于Azure注入的Application Settings,会覆盖配置值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:15:03