使用dotenv访问Node.js中不同文件中的ENV var

时间:2016-11-16 15:47:36

标签: node.js express environment-variables

我有一个简单的应用程序,我正在使用Google Maps API和Darksky API;我已经安装了dotenv来处理隐藏两者的密钥。在关注文档之后,我能够完成这项工作,但仅限于需要dotenv的文件(app.js)。我需要访问footer.ejs文件中的ENV变量和weather.js文件,但是没有在其中定义process.env。我必须输出dotenv吗?这是怎么回事?提前谢谢。

app.js

var express = require('express'),
Dotenv = require('dotenv').config(),
app = express(),
bodyParser = require('body-parser'),
mongoose = require('mongoose');

mongoose.connect(process.env.DB_URL);
app.use(bodyParser.urlencoded({extended: true}));
app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/assets'));

// HomePage
app.get('/',function(req, res){
  res.render('home');
});

app.listen(process.env.PORT || process.env.LOC_PORT,function(err){
  if (err) return console.log(err);
  console.log('Server Running: '+ process.env.LOC_PORT);
});

1 个答案:

答案 0 :(得分:0)

您可以创建env.js文件,按以下方式导出环境变量:

const dotenv = require('dotenv');

module.exports = {
  getEnvVariables: function () {
    const vars = dotenv.load();
    const jsonVars = {};
    for (const key in vars) jsonVars[key] = JSON.stringify(vars[key]);
    return jsonVars;
  },
};

然后只是import {getEnvVariables} from './env';

如果你正在使用 Webpack ,你可以将以下插件添加到你的weback配置文件中,这样你就不需要将导入行放在你的app anyomore的任何文件中:

new webpack.DefinePlugin({
  'process.env': env.getEnvVariables()
}),