Я предполагаю, что PM2 добавляет env vars «родным» системным способом при запуске, что-то вроде:
MYVAR=hey; node app.js
Разница с пакетом dotenv
npm в том, что он ДОЛЖЕН добавлять переменные по-другому, потому что он работает внутри сценария (он не может делать MYVAR=someothervar; node app.js
, потому что программа уже запущена), поэтому он работает следующим образом:
dotenv.config() //reads .env file and appends stuff to process.env at runtime
Теперь предположим, что PM2 запускает MYVAR=hey; node app.js
, а затем внутри app.js запускаем dotenv.config()
, который читает файл .env, содержащий MYVAR=foo
. Какой var будет в process.env?
экосистема.config.js
{
//...standard pm2 config above
env: {
MYVAR: 'ecosystem',
},
}
.env / dotenv
MYVAR=dotenv
Код
dotenv.config()
console.log(process.env.MYVAR)