Аз работя с NodeJS Express app,
В момента има dev
Околна среда, test
env, и prod
Околна среда.
Въпреки това, настройките на DB връзката са в кода, има ли начин за съхранение на DB конфигурацията и всички други конфигурации във файловия формат JSON като ги декларира в модул (отделно завсеки env или всичко в един модул, който трябва да бъде експортиран, може би има по подразбиране.JSON, Dev.JSON, Prod.JSON ... и т.н.) за всяка среда след това ги изискват съответно чрез задаване на правилната конфигурация за правилната среда в app.js ,
Бих искал да постигна това без да се нуждая от трета страна, като например .env или ncof.
Отговори:
0 за отговор № 1Повечето от основните хостинг доставчици на NodeJs използват проста променлива на средата. Можете да използвате това:
process.env.NODE_ENV
За да я дефинирате сами, например "развитие" на вашия местен, можете да направите:
NODE_ENV=developpment node yourapp.js
С това, ви предлагам да използвате конфиг инструмент, като nconf (има някои добри конкуренти). Можете да направите това например:
nconf
.argv() // Takes arguments from CLI
.file("./env." + process.env.NODE_ENV + ".json") // takes from specific env file
.file("package", "./package.json"); // takes from package.json
Тук приоритетът е от най-важното до най-малкото: 1) argv 2) специфичен файл за околната среда 3) package.json
-1 за отговор № 2
Можете да изискате файл въз основа на околната среда.
const env = "test"; // This value can be taken from config or .env
const configs = require(`../path/${env}`);
console.log("DB Config", configs.DB_PATH);
В зависимост от вашата среда можете да заредите файла. И стойността за околната среда може да бъде извлечена от .env или всяка друга конфигурация.