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