使用 dotenv (.env) 的无服务器阶段环境变量

Serverless stage environment variables using dotenv (.env)

我是无服务器新手, 到目前为止,我能够为该应用程序部署和使用 .env

然后,在 provider in stage 属性 in serverless.yml 文件下,我将其更改为不同的阶段。我也做了new.env.{stage}.

使用 sls deploy 重新部署后,它仍然读取默认的 .env 文件。

documentation 状态:

The framework looks for .env and .env.{stage} files in service directory and then tries to load them using dotenv. If .env.{stage} is found, .env will not be loaded. If stage is not explicitly defined, it defaults to dev.

所以,我还是不明白“如果stage没有明确定义,默认是dev”。如何明确定义?

在您的 serverless.yml 中,您需要在 provider 对象中定义 stage 属性。

示例:

provider:
  name: aws
  [...]
  stage: prod

根据您的阶段 属性 配置选择 dotenv 文件。您需要在 serverless.yaml 中明确定义阶段 属性 或在部署命令中进行设置。

这将使用 .env.dev 文件

 useDotenv: true
 provider:
  name: aws
  stage: dev # dev [default], stage, prod
  memorySize: 3008
  timeout: 30

或者您通过部署命令设置阶段 属性。 这将使用 .env.prod 文件

sls deploy --stage prod