我试过node.js从文件.env加载环境变量。如何在没有文件的情况下设置environtment变量?
答案 0 :(得分:0)
这可能不是您正在寻找的答案,但您可以在启动节点应用程序之前使用Node Foreman或Heroku 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;