Ключевой модуль process в Node.js предоставляет свойство env, где хранятся все переменные окружения, которые были заданы в момент запуска процесса.
Код ниже запускает app.js и задаёт USER_ID и USER_KEY.
USER_ID=239482 USER_KEY=foobar node app.jsЭто передаст USER_ID пользователя как 239482, а USER_KEY как foobar. Это подходит для тестирования, однако для production вы, скорее всего, настроите какие-нибудь bash-скрипты для экспорта переменных.
Примечание:
processне нужно импортировать — это глобальный объект в Node.js.
Вот пример, который обращается к переменным окружения USER_ID и USER_KEY, заданным в коде выше.
console.log(process.env.USER_ID); // "239482"
console.log(process.env.USER_KEY); // "foobar"Точно так же можно обращаться к любой заданной вами пользовательской переменной окружения.
В Node.js 20 появилась экспериментальная поддержка .env-файлов.
Теперь можно использовать флаг --env-file, чтобы указать файл окружения при запуске приложения на Node.js. Вот пример файла .env и того, как обращаться к его переменным через process.env.
# файл .env
PORT=3000В вашем js-файле
console.log(process.env.PORT); // "3000"Запустите файл app.js с переменными окружения, заданными в файле .env.
node --env-file=.env app.jsЭта команда загружает все переменные окружения из файла .env, делая их доступными приложению через process.env
Также можно передавать несколько аргументов --env-file. Последующие файлы переопределяют переменные, заданные в предыдущих файлах.
node --env-file=.env --env-file=.development.env app.jsПримечание: если одна и та же переменная определена и в окружении, и в файле, приоритет имеет значение из окружения.
Если вы хотите читать из файла .env опционально, можно избежать
выброса ошибки при отсутствии файла с помощью флага --env-file-if-exists.
node --env-file-if-exists=.env app.jsNode.js предоставляет встроенный API для загрузки .env-файлов прямо из кода: process.loadEnvFile(path).
Этот метод загружает переменные из файла .env в process.env — аналогично тому, как работает флаг --env-file, — но его можно вызвать программно.
Поскольку этот метод вызывается уже после инициализации, установка переменных окружения, связанных со стартом (например, NODE_OPTIONS), не влияет на процесс (тем не менее к этим переменным всё ещё можно обращаться через process.env).
# файл .env
PORT=1234Можно также указать свой путь:
const { loadEnvFile } = require('node:process');
loadEnvFile('./config/.env');