Переменные среды Dotenv в сценарии предварительного запуска

#node.js #environment-variables #dotenv

Вопрос:

Я создал 3 файла, .env | .env.development | .env.production в корневом каталоге моего сервера узла (где server.js и prestart.js ложь).

Я вызываю dotenv.config() prestart.js файл, который выглядит так:

 import dotenv from 'dotenv';
import mysql from "mysql2";

dotenv.config();

console.log(`Hey: ${process.env.REACT_APP_DOTENV_EXISTS}`); // here it works!

let dbConfig = import("./src/config/db-config.js"); // doesn't work in that file!
 

и моя db-config.js внешность похожа:

 const isDevEnv = !process.env.NODE_ENV || process.env.NODE_ENV === 'development';

let config = {};

if(isDevEnv) {
    config = {
        host: process.env.REACT_APP_DB_HOST,          // undefined!
        user: process.env.REACT_APP_DB_USERNAME,      // undefined!
        password: process.env.REACT_APP_DB_PASSWORD,  // undefined!
        db: process.env.REACT_APP_DB_DATABASE,        // undefined!
        dialect: process.env.REACT_APP_DB_CONNECTION, // undefined!
        pool: {
            max: 5,
            min: 0,
            acquire: 30000,
            idle: 10000
        }
    };
}
else{
    // TODO: amazon rds mysql config ?
}

export default config;
 

и, наконец, моя package.json часть сценариев выглядит так:

 "scripts": {
    "prestart": "node prestart.js",
    "start": "node server.js",
    "test": "echo "Error: no test specified" amp;amp; exit 1"
  },
 

Я попытался добавить -r dotenv/config . dotenv_config_path=./.env.development ключи запуска и предварительного запуска в свой package.json и удалить ручной импорт и инициализацию dotenv в коде, но затем сценарий предварительного запуска даже не выполняется.

Я проверяю зависимости сервера (экземпляр базы данных и таблицы) в моем prestart.js .

Тем более запутанной частью является то, что если я импортирую и инициализировать dotenv внутри мой db-config.js файл, то работает везде, в том числе внутри prestart.js файлов (я перенести БД-конфиг экспорт до самого верха) и server.js файл, но если я инициализирую его prestart.js как мои текущие настройки, то переменные не работают нигде, кроме как внутри prestart.js самого файла.

Редактировать: Игнорируйте .development amp; .production файлы, так как я временно скопировал все в .env, они также беспокоят меня, но это другая проблема.