Узнав, что включать секретные ключи API — плохая практика, я провел небольшое исследование и попытался узнать, как создавать собственные process.env
.
После прочтения:
- Node.js Везде с переменными среды!
- Как установить NODE_ENV для производства/разработки в ОС Х
- Как установить process.env из файла в NodeJS?
- файл dotenv не загружает переменные среды
Я пытаюсь установить файл env локально на основе process.env.NODE_ENV
. Приложение будет размещено на Heroku, и в моем .gitignore у меня есть dev.env
, но когда я пытаюсь использовать dotenv
локально я получаю undefined
. Я установил среду локально с помощью export NODE_ENV=development
в своем терминале. Когда я запускаю команду npm start
или nodemon
, обе возвращают undefined
, но в env.js я получаю Testing for: development
, например:
nodemon
[nodemon] 1.19.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node app.js`
Testing for: development
undefined
Вот что у меня есть:
app.js:
const keys = require('./config/env')
return console.log(process.env.PORT)
config/env.js:
const env = process.env.NODE_ENV
console.log(`Testing for: ${env}`)
try {
switch(env) {
case 'undefined':
Error('Environment undefined, if local in terminal: export NODE_ENV=development')
break
case 'development':
require('dotenv').config({
path: './dev.env'
})
break
case 'production':
require('dotenv').config({
path: './prod.env'
})
break
default:
Error('Unrecognized Environment')
}
} catch (err) {
Error('Error trying to run file')
}
config/dev.env:
## Port number to run Application
PORT=4321
но в app.js, когда я тестирую с return console.log(process.env.PORT)
или return console.log(keys.PORT)
, они оба регистрируют undefined
, почему? Кажется, я делаю что-то неправильно в env.js при использовании dotenv
.
Чтобы уточнить, я еще даже не продвигаюсь к Heroku, и prod.env будет проверкой. Если есть лучший подход, пожалуйста, просветите меня.
export NODE_ENV=development
, оно должно работать сnpm start
илиnodemon
- person DᴀʀᴛʜVᴀᴅᴇʀ   schedule 26.07.2019console.log(process.env.NODE_ENV)
возвращает разработку в терминале. - person DᴀʀᴛʜVᴀᴅᴇʀ   schedule 26.07.2019