【问题标题】:Correct .env file with serverless-dotenv-plugin使用 serverless-dotenv-plugin 更正 .env 文件
【发布时间】:2020-11-30 20:49:45
【问题描述】:

我使用以下作为自定义 serverless-dotenv-plugin 插件配置:

custom: dotenv: path: .env-${opt:stage, 'local'}

但我真正想要得到的是,当我不提供任何参数时,从 .env 文件加载环境,当我使用 staging 作为 CLI 参数时,从 .env.staging 文件加载环境。

我不知道这如何反映在上面的path 中。有什么帮助吗?

【问题讨论】:

    标签: serverless-framework serverless serverless-plugins


    【解决方案1】:

    我只使用普通的dotenv 插件就可以让你的用例工作。

    在我的serverless.yaml 中,我根据stage 参数指定要从文件加载的环境变量(dev 是默认值):

    provider: 
      stage: ${opt:stage, 'dev'}
      environment:
        FOO: ${file(./config.${self:provider.stage}.js):getEnvVars.FOO}
        BAR: ${file(./config.${self:provider.stage}.js):getEnvVars.BAR}
    

    然后每个阶段一个文件从右边.env file加载环境变量:

    config.dev.js:

    require('dotenv').config({path: __dirname + '/dev.env'});
    const config = require('./environmentVariables.js');
    module.exports.getEnvVars = config.getEnvVars;
    

    config.production.js:

    require('dotenv').config({path: __dirname + '/production.env'});
    const config = require('./environmentVariables.js');
    module.exports.getEnvVars = config.getEnvVars;
    

    我没有导出上述每个配置文件中的每个环境变量,而是为此创建了一个帮助文件 (environmentVariables.js):

    module.exports.getEnvVars = () => ({
        FOO: process.env.FOO,
        BAR: process.env.BAR
    });
    

    最后但并非最不重要的是包含实际变量的.env 文件。我将文件命名为 dev.envproduction.env

    FOO=foo
    BAR=bar
    

    它的作用就像一个魅力,唯一的缺点是你必须编辑几个不同的文件,每当你想添加一个新的环境变量。

    【讨论】:

    • 为什么你在 config.staging.js 中需要 staging.env 但你却说文件名为 production.env?
    • 感谢您发现 Adrián,现已更正。
    【解决方案2】:

    我是 serverless-dotenv-plugin 的作者。尝试从提供程序或其他选项动态加载 env 文件时存在逻辑问题。不过,我已经更新了插件,以便您可以根据设置的环境动态加载 env 文件。

    例如,如果您运行“NODE_ENV=production sls deploy”,它将查找名为 .env.production 的文件。如果没有找到,它将回退到 .env。

    更多详细信息请参阅自述文件https://github.com/infrontlabs/serverless-dotenv-plugin

    【讨论】:

      猜你喜欢
      • 2018-06-05
      • 2015-12-11
      • 2020-01-31
      • 2020-04-14
      • 2020-03-07
      • 2021-05-20
      • 2020-09-05
      • 2021-11-08
      • 2015-08-19
      相关资源
      最近更新 更多