Ответ 1
Традиционная альтернатива тому, что вы делаете, особенно когда речь идет о ключах API, заключается в использовании переменных окружения. Это настройка конфигурации на уровне операционной системы. Каждый процесс имеет свой собственный набор переменных среды, обычно унаследованных от его родительского процесса. По соглашению переменные среды имеют имена в верхнем регистре.
В node.js вы можете получить доступ к переменным среды через process.env
. Например, если вы запускаете приложение следующим образом:
$ MY_VARIABLE=test node app.js
Вы можете получить доступ к переменной окружения MY_VARIABLE
с помощью:
process.env.MY_VARIABLE
Однако может потребоваться утомительная передача переменных (-ов) среды при каждом вызове вашей программы. Поэтому есть пакеты, такие как dotenv, которые позволяют хранить переменные среды в текстовом файле.
В частности, у вас будет файл с именем .env
и в нем вы можете:
MY_VARIABLE=test
OTHER_VARIABLE=foo
В начале вашего app.js
выполните следующие действия:
require('dotenv').config();
Это считывает значения переменной среды из файла .env
. Затем вы можете получить к ним доступ, так как вы получите доступ к любым другим переменным среды:
console.log("MY_VARIABLE: " + process.env.MY_VARIABLE);
console.log("OTHER_VARIABLE: " + process.env.OTHER_VARIABLE);
Теперь вам не нужно явно передавать переменные среды в ваше приложение после вызова, т.е. вы можете просто запустить его, как обычно:
$ node app.js
Если вы явно передадите один, он переопределит любое значение, которое вы указали в файле .env
:
$ MY_VARIABLE=bar node app.js
Теперь переменная среды MY_VARIABLE
будет иметь значение "bar"
вместо "testing"
. Поскольку OTHER_VARIABLE
не передается явно, он сохраняет значение "foo"
, указанное в файле .env
.