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

使用dotenv访问Node.js中不同文件中的ENV var,node.js,express,environment-variables,Node.js,Express,Environment Variables,我有一个简单的应用程序,我正在使用谷歌地图API和Darksky API;我已经安装了dotenv来处理隐藏这两个密钥的问题。在遵循文档之后,我能够做到这一点,但仅在需要dotenv的文件(app.js)中。我需要访问footer.ejs文件中的ENV变量和weather.js文件,但其中未定义process.ENV。我必须导出dotenv吗?这是怎么回事?提前谢谢 app.js 您可以创建env.js文件,将环境变量导出如下: const dotenv = require('dotenv');

我有一个简单的应用程序,我正在使用谷歌地图API和Darksky API;我已经安装了dotenv来处理隐藏这两个密钥的问题。在遵循文档之后,我能够做到这一点,但仅在需要dotenv的文件(app.js)中。我需要访问footer.ejs文件中的ENV变量和weather.js文件,但其中未定义process.ENV。我必须导出dotenv吗?这是怎么回事?提前谢谢

app.js
您可以创建
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;
  },
};
然后从“/env”导入{getEnvVariables}之后

如果您使用的是Webpack,您可以将以下插件添加到您的weback配置文件中,这样您就不需要在应用程序的任何文件中添加导入行:

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

谢谢你的帮助。我从weather.js收到一个“意外令牌导入”错误,从env.js收到一个“require is not defined”错误。@halfacreyum抱歉,这是ES6语法,您也可以使用
require
并将我回答中的
const
s替换为
var
s。对不起,我确实将const切换为var,我应该提到过这一点。我仍然从env.js文件('require is not defined')中得到错误,我正在页脚中加载该文件的脚本。
new webpack.DefinePlugin({
  'process.env': env.getEnvVariables()
}),