【问题标题】:Accessing ENV var in different files in Node.js using dotenv使用 dotenv 访问 Node.js 中不同文件中的 ENV var
【发布时间】:2017-03-30 21:36:07
【问题描述】:

我正在开发一个使用 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);
});

【问题讨论】:

    标签: node.js express environment-variables


    【解决方案1】:

    您可以创建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,您可以将以下插件添加到您的 webback 配置文件中,这样您就无需再将导入行放在您应用程序的任何文件中: p>

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

    【讨论】:

    • 感谢您的帮助。我收到来自 weather.js 的“意外令牌导入”错误,以及来自 env.js 的“未定义要求”错误。
    • @halfacreyum 抱歉,这是 ES6 语法,您也可以使用 require 并将我的答案中的 consts 替换为 vars。
    • 对不起,我确实将 const 切换为 var,我应该提到这一点。我仍然从 env.js 文件中收到错误('require is not defined'),我正在页脚中加载该文件的脚本。
    猜你喜欢
    • 2021-02-19
    • 2017-10-08
    • 2015-12-11
    • 2019-06-07
    • 1970-01-01
    • 2023-02-26
    • 2018-06-05
    • 2015-08-19
    • 2020-01-31
    相关资源
    最近更新 更多