Node-config не будет использовать переменные из custom-environment-variables.json в Heroku
Я использую модуль node-config для строк подключения mongo и ключей jwt.
Например:
if(!config.get('jwtPrivateKey')){
throw new Error('FATAL ERROR: jwtPrivateKey is not defined');
мой custom-environment-variables.json
файл выглядит так:
{
"jwtPrivateKey": "video-app_jwtPrivateKey",
"db": "video-app_db"
}
default.json
{
"db": "default db",
"jwtPrivateKey": "default key"
}
production.json
{
"db": "production db",
"jwtPrivateKey": "production key"
}
Короче говоря - хотя переменные окружения установлены в heroku, node-config не смотрит на значения, установленные в custom-environment-variables.json
, Я могу изменить NODE_ENV и получить жестко закодированные значения соответствующего файла json, но переменные окружения никогда не используются, что, кажется, противоречит документам
1 ответ
Я была такая же проблема. Потребовалось удалить дефис из ключей для heroku для чтения из пользовательских переменных среды.
Итак, custom-environment-variables.json:
{
"jwtPrivateKey": "video-app_jwtPrivateKey",
"db": "video-app_db"
}
становится:
{
"jwtPrivateKey": "videoapp_jwtPrivateKey",
"db": "videoapp_db"
}
Heroku документы:
Конфиг вар политики
- Ключи конфигурации должны использовать только буквенно-цифровые символы и символ подчеркивания (_), чтобы обеспечить их доступность на всех языках программирования. Клавиши конфигурации var не должны содержать дефис.
- Данные конфигурации var (комбинация всех ключей и значений) не могут превышать 32 КБ для каждого приложения.
- Config var keys не должен начинаться с двойного подчеркивания (__).
- Ключ config var не должен начинаться с HEROKU_, если он не установлен самой платформой Heroku.
Итак, у меня была та же проблема: я развернул свое приложение, установил переменные среды в Heroku, но ничего не работало (в отличие от моей локальной машины, где все было хорошо).
Похоже, проблема заключалась в том, что я случайно добавил всеnode_modules
папку в git. Это произошло потому, что я создал.gitignore
файл после первоначальной фиксации (если я правильно понял).
То, что я сделал, у меня сработало: я удалил node_modules
из git и зафиксировал / отправил изменения в Heroku:
git rm -rf node_modules
затем зафиксировать и нажать.
Это было сообщение об ошибке, которое я получил:
Ошибка: /app/node_modules/bcrypt/lib/binding/bcrypt_lib.node: недопустимый заголовок ELF
Я потратил два дня, пытаясь понять это.
Надеюсь, это поможет.