Serverless框架.env.{stage}环境变量不生效及显式指定stage方法
如何在Serverless Framework中显式定义stage
有三种可被框架识别的显式定义stage的方式:
- 部署时通过命令行参数传递
执行sls deploy时追加--stage <环境标识>参数即可,比如要使用预发环境配置,执行命令:sls deploy --stage staging
此时框架会将传入的staging识别为显式stage,自动加载.env.staging文件,不会读取默认的.env文件。 - 通过全局系统环境变量指定
提前设置名为SLS_STAGE的系统环境变量,框架启动时会优先读取该变量的值作为显式stage。
Linux/macOS 临时配置示例:export SLS_STAGE=prod
Windows cmd 临时配置示例:set SLS_STAGE=prod
配置完成后直接执行sls deploy即可加载对应环境的env文件。 - 在项目级配置文件中固定配置
在项目根目录新建serverless.com.yml文件(注意和服务配置文件serverless.yml区分),在文件中添加stage: <环境标识>配置项,该配置会被识别为显式stage,优先级高于服务配置中provider下的stage值。
补充说明:你之前在
serverless.yml的provider配置项下修改的stage属于服务默认回退配置,不属于框架定义的「显式定义stage」范畴,所以dotenv加载逻辑不会把该值作为判断.env.{stage}的依据,这就是你修改配置后仍然读取默认.env文件的原因。
内容的提问来源于stack exchange,提问作者Jastria Rahmat
相关产品推荐
相关产品推荐

