【问题标题】:Variable assignment withing .env file使用 .env 文件进行变量赋值
【发布时间】:2018-07-24 16:45:16
【问题描述】:

我有一个 .env 文件,看起来像:

NODE_ENV = local
PORT = 4220
BASE_URL = "http://198.**.**.**:4220/"

PROFILE_UPLOAD = http://198.**.**.**:4220/uploads/profile/
POST_UPLOAD = http://198.**.**.**:4220/uploads/discussion/
COMPANY_UPLOAD = http://198.**.**.**:4220/uploads/company/
ITEM_UPLOAD  = http://198.**.**.**/uploads/item/
GROUP_UPLOAD  = http://198.**.**.**/uploads/group/

我想做这样的事情:

NODE_ENV = local
IP = 198.**.**.**
PORT = 5000
BASE_URL = http://$IP:$PORT/

PROFILE_UPLOAD = $BASE_URL/uploads/profile/
POST_UPLOAD = $BASE_URL/uploads/discussion/
COMPANY_UPLOAD = $BASE_URL/uploads/company/
ITEM_UPLOAD  = $BASE_URL/uploads/item/
GROUP_UPLOAD  = $BASE_URL/uploads/group/

BASE_URL 的预期结果是 http://198.**.**.**:4220/

我尝试了很多语法,但没有得到计算值

尝试过的语法:"${IP}"${IP}$IP

我使用 dotenv 包来访问环境变量。

【问题讨论】:

    标签: node.js express environment-variables


    【解决方案1】:

    很遗憾dotenv 不能合并变量。查看this issue 了解更多信息并为您的项目找到解决方案。

    【讨论】:

      【解决方案2】:

      如前所述,您不能在 .env 文件中分配变量。您可以将 *_UPLOAD 文件移动到 config.js file 并将其签入 .gitignore ,然后您就可以这样做了

      //config.js
      
      const BASE_URL = `http://${process.env.IP}:${process.env.PORT}/`
      
      module.exports = {
       PROFILE_UPLOAD: BASE_URL+"uploads/profile/",
       POST_UPLOAD: BASE_URL+"uploads/discussion/",
       ....
      }
      

      【讨论】:

        【解决方案3】:

        dotenv-expand 建立在 dotenv 之上来解决这个特定问题

        【讨论】:

          【解决方案4】:

          dotenv-expand 是@maxbeatty 回答的解决方案,以下是要遵循的步骤

          步骤:

          首次安装:

          npm install dotenv --save
          npm install dotenv-expand --save
          

          然后更改 .env 文件,如:

          NODE_ENV = local
          PORT = 4220
          IP = 192.***.**.**
          BASE_URL = http://${IP}:${PORT}/
          
          PROFILE_UPLOAD = ${BASE_URL}/uploads/profile/
          POST_UPLOAD = ${BASE_URL}/uploads/discussion/
          COMPANY_UPLOAD = ${BASE_URL}/uploads/company/
          ITEM_UPLOAD  = ${BASE_URL}/uploads/item/
          GROUP_UPLOAD  = ${BASE_URL}/uploads/group/
          

          最后一步:

          var dotenv = require('dotenv');
          var dotenvExpand = require('dotenv-expand');
          
          var myEnv = dotenv.config();
          dotenvExpand(myEnv);
          
          process.env.PROFILE_UPLOAD; // to access the .env variable
          

          OR(较短的方式)

          require('dotenv-expand')(require('dotenv').config()); // in just single line
          process.env.PROFILE_UPLOAD; // to access the .env variable
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-02-08
            • 1970-01-01
            • 2020-02-16
            • 2021-10-07
            • 2018-07-21
            相关资源
            最近更新 更多