我应该在每个节点 JS 文件中调用 dotenv 吗?

Should I call dotenv in every node JS file?

我想使用环境变量。不幸的是,我是一个没有经验的开发人员,很晚才决定在我的项目中实施这样的解决方案。

我正在尝试将位于 .env 文件中的环境变量注入所有 JS 文件(并非所有文件都使用环境变量,但我认为这会更快更容易)。目前,我正在使用 dotenv 包,但它显然是同时在一个文件中工作。

我应该以标准方式使用 dotenv 吗?也许有一个我不知道的漏洞,这就是为什么以这种方式使用环境变量非常不受欢迎。

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

就像您提到的文件评论一样,您应该有一个 ENV 的入口点。您不想在每个文件中 require('dotenv')

而是在 utils 或 core 文件夹中创建一个新文件(名称类似于 environment.js)。

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

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

您接受了第一条评论,但它不正确 way/answer。 您可以在入口文件的最开头包含 require('dotenv').config() (index.js , server.js ..),您只需调用即可在应用程序的任何位置获取 process.env 变量process.env.VARIABLE_NAME