Vue.js обрабатывает режимы автоматически, в зависимости от команды (например, serve
устанавливает NODE_ENV=development
, а build
устанавливает NODE_ENV=production
).
В зависимости от режима он также автоматически загружает файлы с переменными с диска.
Переменные среды в Node.JS
Однако Node.JS по умолчанию этого не делает, и вам необходимо настроить приложение для обработки переменных среды.
В Node.JS вы можете передавать переменные с помощью команды оболочки, например:
MY_VARIABLE=x node myapp.js
(добавив команду с переменными), и это даст вам process.env.MY_VARIABLE
внутри вашего приложения myapp.js
.
Следуя этому поведению, существует консенсус относительно использования переменной NODE_ENV
для настройки режима среды.
Для производственного использования вы должны запустить свое приложение, используя NODE_ENV=production node myapp.js
, а для разработки NODE_ENV=development node myapp.js
.
Конечно, если на вашем компьютере уже установлены эти переменные среды (например, в .bash_profile
), вам не нужно добавлять к ним команду.
На практике на машинах для разработки эти переменные уже настроены на вашем компьютере, в то время как рабочие машины (например, контейнеры Docker и т. Д.) Запускаются чистыми, и вы передаете переменные среды при запуске приложения.
Например, Heroku (и другие службы развертывания) позволяют настраивать переменные среды, которые устанавливаются при запуске компьютера.
Существует также метод хранения переменных в файлах (таких как .env или другие файлы), но те, которые вам нужно будет прочитать с диска при запуске приложения.
И тут в игру вступает dotenv
(и config
package).
Что делает dotenv
, это читает файл .env
, хранящийся в пути выполнения вашего приложения (корень приложения), и устанавливает любые переменные, определенные там, в process.env
для использования Node.JS.
Это чрезвычайно полезно для машин разработки, но на производстве рекомендуется не иметь файлов, которые хранят конфиденциальную информацию в переменных, а использовать системные переменные среды.
Для производственных машин также есть возможность создать или загрузить в машину файл .env
во время настройки машины в каталог приложения.
Примечание:
- никогда не передает
.env
или файлы конфигурации, которые хранят пароли и конфиденциальную информацию, в ваш репозиторий
- никогда не хранить разработки и производства переменных в одном файле
Подход дотенв
Лучший способ сделать это - использовать dotenv
и иметь разные .env
файлы, один на вашем компьютере для разработки и другой на вашем рабочем компьютере. Таким образом, когда ваше приложение запускается, оно читает переменные, которые хранятся в соседнем .env
. Это наиболее безопасный и надежный способ при отсутствии средств для передачи переменных среды на рабочий компьютер из приложения / интерфейса управления машиной.
Самый простой способ настроить приложение с помощью dotenv
- установить для вашей команды start
что-то вроде:
"start": "nodemon --exec \"node -r dotenv/config\" server.js"
и затем в файле .env
, хранящемся на вашем локальном компьютере / компьютере для разработки, у вас будет что-то похожее на:
DATABASE_PASSWORD=1235
DATABASE_USERNAME=joe-dev
...
и в файле .env
на вашем рабочем компьютере (сервере):
DATABASE_PASSWORD=root@1235
DATABASE_USERNAME=root
...