使用 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
我是无服务器新手,
到目前为止,我能够为该应用程序部署和使用 .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