Как определить разницу между переменными Heroku Config и переменными .Env - PullRequest
0 голосов
/ 14 мая 2018

Я - нативный разработчик iOS Swift, и я слегка увлекся Node.js, так что этот процесс немного чужд для меня.

Использование узла, если я хочу скрыть свои переменные, сначала импортирую dotenv module, require в моем файле app.js, установите переменные .env, добавьте его в файл .gitignore, а затем используйте модуль dotenv для доступа к ним:

// on the cli
$ npm install dotenv --save
$ touch .env
$ touch .gitignore 

// in the .env file
MY_SECRET_KEY=12345
// finally add the .env file to the .gitignore filel

// in the app.js file
const dotenv = require('dotenv');
dotenv.load();

initializeSomethingWith(process.env.MY_SECRET_KEY)

В Heroku я устанавливаю ключи как секретные, используя:

$ heroku config:set MY_SECRET_KEY=123456789
$ git push heroku master

Я получаю доступ к переменной конфигурации heroku, используя:

process.env.MY_SECRET_KEY

Где моя путаница заключается в том, что когда мне требуется dotenv module, какможет ли он определить разницу между тем, что находится внутри файла .env, и тем, что я установил для переменных heroku?

app.js file:

const dotenv = require('dotenv');
dotenv.load();

var isThisAHerokuKey = process.env.MY_SECRET_KEY // key is 123456789

var orIsThisADotEnvKey = process.env.MY_SECRET_KEY // key is 12345

initializeSomethingWith(process.env.MY_SECRET_KEY) // which key is this using?

Конечно, здравый смысл сказал бы простоне называйте ключи одинаковыми.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

После недолгой игры с этим кажется, что если я запускаю файл локально, запустив npm start, он будет использовать значение 12345, но если он будет удаленно использоваться в Heroku, он будет использовать значение 123456789.

const dotenv = require('dotenv');
dotenv.load();

// REMOTE VALUE
var isThisAHerokuKey = process.env.MY_SECRET_KEY // key is 123456789

// LOCAL VALUE
var orIsThisADotEnvKey = process.env.MY_SECRET_KEY // key is 12345

// DEPENDS ON WETHER USED LOCALLY or REMOTELY
initializeSomethingWith(process.env.MY_SECRET_KEY)
0 голосов
/ 14 мая 2018

Рекомендуемый способ работы с переменными окружения в node.js на Heroku - НЕ использовать явно require('dotenv') в вашем коде. Вместо этого установите значения env для приложений Heroku с помощью heroku config:set, как вы это делали. В вашей среде разработки поместите локальные переменные env в ваш файл .env, но НЕ добавляйте .env в git (т.е. вставьте его в ваш .gitignore). Затем используйте heroku local для запуска вашего приложения (в зависимости от вашего Procfile). Когда heroku local выполняет ваше приложение, оно принимает ваши env-переменные, определенные в .env, так что на них можно ссылаться в вашем коде через process.env.ENV_VAR_XYZ.

См. здесь для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...