【问题标题】:Is it posible to set environtment variable without file?是否可以在没有文件的情况下设置环境变量?
【发布时间】:2017-11-09 12:30:44
【问题描述】:

我已经尝试了 node.js 从文件 .env 加载环境变量。如何在没有文件的情况下设置环境变量?

【问题讨论】:

  • 您可以通过运行命令动态分配环境变量
  • 设置 NODE_ENV=production

标签: angularjs node.js nginx environment-variables environment


【解决方案1】:

这可能不是您正在寻找的答案,但您可以使用Node ForemanHeroku Start 在启动节点应用程序之前自动加载您的 .env 文件。

如果你不想这样做,你可以使用这样的东西:

fs = require('fs');
path = require('path');

function readEnv() {
  return new Promise(
    function(resolve, reject) {
      let envPath = path.join(process.cwd(), '.env');
      fs.readFile(envPath, 'utf8',
        (err, data) => {
          if (err) {
            return reject(err);
          }

          let env = {};
          data.split(/[\r\n]+/g).forEach(
            (line) => {
              line = line.trim();
              if (line) {
                let idx = line.indexOf('=');
                if (idx > -1) {
                  let key = line.substr(0,idx);
                  let value = line.substr(idx+1);
                  env[key] = value;
                }
                else {
                  env[line] = '';
                }
              }
            }
          );

          resolve(env);
        }
      );
    }
  );
}

function processEnv() {
  return readEnv().then(
    (env) => {
      Object.keys(env).forEach(
        (key) => {
          process.env[key] = env[key];
        }
      );
      return true;
    }
  ).catch(
    (err) => {
      console.error(err);
    }
  );
}

module.exports = processEnv;

【讨论】:

  • thx,我希望我的 nodejs 项目不是从文件而是从其他东西加载环境变量。在 PHP 项目的情况下,我已经通过在 nginx 中使用 fastcgi 来尝试这个,所以 php 项目从 nginx 加载环境。但是对于 node js 是否可以这样做?
  • 你想如何加载环境变量?您想使用 http 客户端从不同的服务器获取它们吗?
  • 我还不知道,它可以从 nginx 像 PHP 或其他方法加载吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-03
  • 2017-11-11
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多