Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用多个.env文件是错误的做法吗?_Javascript_Node.js_Security_Environment Variables_Password Protection - Fatal编程技术网

Javascript 使用多个.env文件是错误的做法吗?

Javascript 使用多个.env文件是错误的做法吗?,javascript,node.js,security,environment-variables,password-protection,Javascript,Node.js,Security,Environment Variables,Password Protection,我需要在不同的环境中运行测试:DEV,STAGING,PRODUCTION。 不用说,上述环境的环境变量/秘密显然是不同的 我的快速解决方案是为每个环境创建一个env文件,比如dev.env,staging.env&prod.env 但根据流行的dotEnv npm软件包和12因子应用程序的文档,不建议在您的repo中包含多个.env文件 请给我一个针对多种环境管理环境变量的实用解决方案 如果我正确理解他们在这里写的内容: 我应该有多个.env文件吗? 不可以。我们强烈建议不要使用“mai

我需要在不同的环境中运行测试:
DEV
STAGING
PRODUCTION
。 不用说,上述环境的环境变量/秘密显然是不同的

我的快速解决方案是为每个环境创建一个env文件,比如
dev.env
staging.env
&
prod.env

但根据流行的dotEnv npm软件包和12因子应用程序的文档,不建议在您的repo中包含多个
.env
文件

请给我一个针对多种环境管理环境变量的实用解决方案


    • 如果我正确理解他们在这里写的内容:

      我应该有多个.env文件吗?

      不可以。我们强烈建议不要使用“main.env”文件和类似.env.test的“environment.env”文件。您的配置应该在部署之间有所不同,并且不应该在环境之间共享值

      这并不意味着您不应该有多个env文件,而是不应该有一个包含所有默认配置的
      main.env
      文件和从
      main.env
      继承并覆盖某些值的附加env文件(每个环境一个)

      不建议使用的原因是,使用这种配置很难理解“特定值来自何处?”(来自以下哪一个:主环境文件、特定环境文件、环境变量、代码默认值等)

      这就是说,如果您创建多个env文件而没有这样的“main”,这意味着您需要在不同的env文件上复制许多值,这是因为清晰性更好,但也有重复/冗长的缺点

      在我看来,配置并不是一件小事,虽然您只有一个小项目,但选择如何实施并不重要,但如果我们谈论的是更关键的东西,比如公司的产品,那么有很多解决方案可用,有些是开源的,免费的,有些是成本钱,但是,值得进行研究,找出哪一项对您的用例更有意义


      在我看来,在项目中最好有多个.env

      例如,在Symfony中,我们可以为我们的项目配置多个环境,例如:local、dev、prod。它的目的是使代码更清晰易读


      我不确定是否有过多的技术,但您可以在这篇Symfony文章中读一点关于.env的内容(不必成为Symfony的破坏者):

      在您的回购协议中?但是
      .env
      文件包含API密钥和加密哈希等秘密,它们不应该提交,也不应该是您的repo的一部分。
      .env
      文件的全部要点是每台机器有一个,因此您可以根据机器/环境精确地在其中包含内容:dev、staging、production。还是我遗漏了什么?@JeremyThille一个人不应该把秘密放在
      .env
      文件中,假设它们在repo中被检查过。机密应通过专用机制单独安全地处理!现在,不将env文件签入repo会产生一个不同的问题:我们把它放在哪里?我们如何备份它?我们如何跟踪变化?