Променљива окружења пружа информације о окружењу у којем се одвија процес. Они конфигуришу портове сервера и везе са базом података, сакривају осетљиве податке попут АПИ кључева и још много тога.
НестЈС начин читања варијабли окружења разликује се од стандардног НодеЈС-овог дотенв пакета.
НестЈС конфигурациони модул вам омогућава да управљате променљивим окружења у само неколико корака.
Корак 1: Инсталирање зависности
НестЈС обезбеђује наменски @нестјс/цонфиг пакет који користи дотенв пакет испод хаубе. Овај пакет нулте зависности учитава променљиве окружења из а .енв фајл у процес.енв. Објекат процесс.енв је глобална променљива која се убризгава у време извршавања за употребу ваше апликације.
Инсталирајте НестЈС конфигурациони пакет тако што ћете покренути:
нпм инсталл @нестјс/config
НестЈС конфигурациони пакет функционише тако што апликацији излаже конфигурациони модул и конфигурациони сервис. Конфигурациони модул специфицира .енв поднесите апликацију за читање. У исто време, конфигурациони сервис излаже информације унутар .енв датотеку у остатак апликације.
Корак 2: Креирање ЕНВ датотека
Чување променљивих окружења у датотеци вам омогућава лако им приступите са било ког језика, у различитим оперативним системима. Можете контролисати ове верзије .енв датотеке, тако да повећавају преносивост пројекта и могу олакшати проблеме са отклањањем грешака.
НестЈС приступ за креирање .енв датотека разликује се од званичне дотенв препоруке. Према дотенв документацији, не би требало да креирате више од једне .енв датотеке у апликацији. НестЈС вам омогућава да креирате више .енв датотека са различитим именима.
Као добра пракса, увек треба да креирате .енв датотеке у основном директоријуму вашег пројекта и да их укључите у свој .гитигноре фајл.
Не постоји посебан начин за креирање .енв датотеке – само их креирајте и уредите помоћу нормалног уређивача текста – али морају да почињу са .енв. На пример, .енв.девелопмент.
Корак 3: Подешавање конфигурационог модула
Пратите корак у наставку да бисте глобално подесили свој Цонфиг Модуле и одредили .енв стазе:
- У основном модулу вашег пројекта (апп.модуе.тс) датотека, увоз ЦонфигМодуле из @нестјс/цонфиг.
- Додати ЦонфигМодуле своме увози низ и позовите форРоот метода на њему.
- Проследите конфигурациони објекат у форРоот метод, са ан исГлобал власништво до истинито. Ова опција дели конфигурацију преко других модула у вашој апликацији, што значи да нећете морати да је подешавате више од једном.
- Наведите своје енвФилеПатх у вашем конфигурационом објекту. Ово својство може бити или низ (ако га имате .енв фајл) или низ који садржи све ваше .енв датотеке и рећи ће конфигурационом модулу које датотеке да тражи.
// апп.модуле.тс
@Модуле({
увози: [
ЦонфигМодуле.форРоот({
исГлобал: истинито,
енвФилеПатх: 'Назив(а) ваших .енв датотека',
}),
Корак 4: Коришћење Цонфиг Сервице-а за читање променљивих окружења
Да бисте приступили конфигурационим вредностима, почните увозом ЦонфигСервице из @нестјс/цонфиг. Убризгајте га у конструктор класе проглашавањем а приватни променљива и додељивање ЦонфигСервице као свој тип.
На пример:
конструктор(приватна конфигурација: ЦонфигСервице) {}
Да бисте приступили променљивој, позовите добити метода на ЦонфигСервице На твојој приватни променљива. Проследите му тип података који вам је потребан као генерички и име променљиве окружења којој желите да приступите.
На пример:
цонст енвВар = тхис.цонфиг.гет<низ>('ЕНВ_ВАЛУЕ');
Тхе ЦонфигСервице тражи вредност са именом „ЕНВ_ВАЛУЕ“ и враћа њену вредност.
Имајте на уму да ако два .енв датотеке садрже исто име својства, прво наведено у енвФилеПатх имаће предност.
Важност варијабли окружења
Променљиве окружења су суштински део програма, посебно у сложенијим апликацијама. Они вам омогућавају да контролишете конфигурацију вашег програма путем лако разумљивог, уобичајеног механизма.
Можете користити променљиве окружења за контролу свих аспеката конфигурације. Од различитих подешавања базе података до осетљивих података као што су АПИ кључеви и акредитиви, они вам омогућавају да промените конфигурацију без додиривања основног изворног кода.