我应该在每个 NodeJS 文件中调用dotenv吗?

ffvjumwh  于 2023-06-22  发布在  Node.js
关注(0)|答案(4)|浏览(181)

我想使用环境变量。不幸的是,我是一个没有经验的开发人员,很晚才决定在我的项目中实现这样的解决方案。
我试图注入环境变量,位于.env文件,所有的JS文件(不是所有的使用环境变量,但我认为这将是更快,更容易)。目前,我使用dotenv包,但它显然是一次在一个文件中工作。
我应该用标准的方式使用dotenv吗?也许有一个我不知道的漏洞,这就是为什么以这种方式使用环境变量非常不受欢迎的原因。

if (process.env.NODE_ENV !== 'production') {
  require('dotenv').config();
}
njthzxwz

njthzxwz1#

就像前面提到的文件注解一样,您应该为ENV提供一个入口点。您不希望在每个文件中都使用require('dotenv')
相反,创建一个新文件(名为类似environment.js),位于utils或core文件夹中。

require('dotenv').config();

/* eslint no-process-env:0 */
module.exports.default = {

    env: process.env.env,
    url: process.env.url,
    apiUrl: process.env.apiUrl,
    logLevel: process.env.logLevel,

    db: {
        host: process.env.db_host
        port: process.env.db_port
    }
    // Grab everything in you .env file here
}

然后在你的每个其他文件中,你可以将你的配置包含在一个漂亮的JSON对象中。

const config = require('../utils/environment');

dbConnector(config.db.host, config.db.port);
// blah blah blah
9q78igpj

9q78igpj2#

你接受了第一条评论,但这不是正确的方式/答案。您可以在入口文件(index.js,server.js..)的最开始处包含require('dotenv').config(),您只需调用process.env.VARIABLE_NAME就可以在应用程序中的任何位置获得process.env变量

ttp71kqs

ttp71kqs3#

在下面的例子中,文件/config/db.config.js使用一些env变量,所以我需要在导入文件之前添加dotenv.config()行。
这是index.js文件

const express = require('express');
require('dotenv').config();
const dbConfig = require('./config/db.config');

结论是在index.js的顶部添加dotenv配置行

j2datikz

j2datikz4#

你不需要在每个文件中都写require('dotenv ').config()。只需将其作为index.js或主文件中的顶部语句,在运行程序时首先执行。

相关问题