#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, они также беспокоят меня, но это другая проблема.