在没有文件的情况下设置environtment变量是否可行?

时间:2017-11-09 03:16:43

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

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

1 个答案:

答案 0 :(得分:0)

这可能不是您正在寻找的答案,但您可以在启动节点应用程序之前使用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;