Должен ли я вызывать dotenv в каждом файле JS узла? - PullRequest
0 голосов
/ 04 ноября 2019

Я хочу работать с переменными среды. К сожалению, я неопытный разработчик и очень поздно решил внедрить такое решение в моем проекте.

Я пытаюсь внедрить переменные среды, расположенные в файле .env, во все файлы JS (не все из них). используя переменные окружения, но я думал, что это будет быстрее и проще). В настоящее время я использую пакет dotenv, но он, очевидно, работает в одном файле одновременно.

Должен ли я использовать dotenv стандартным способом? Возможно, есть уязвимость, о которой я не знаю, и поэтому очень непопулярно использовать переменные окружения таким образом.

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

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Вам не нужно писать require ('dotenv'). Config () в каждом файле. Просто включите это как верхний оператор в index.js или в основной файл, который был выполнен при первом запуске вашей программы.

0 голосов
/ 04 ноября 2019

Как и комментарий к упомянутому файлу, у вас должна быть точка входа для ваших 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
...