Node-config将不使用Heroku中来自custom-environment-variables.json的变量

时间:2019-01-29 05:20:15

标签: node.js heroku environment-variables node-config

我正在使用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文件的硬编码值,但是从未使用过环境变量,这似乎与文档相矛盾

3 个答案:

答案 0 :(得分:1)

您可以在Heroku中配置变量on this way

答案 1 :(得分:0)

我有同样的问题。从heroku的键中删除了连字符,以便从自定义环境变量读取数据。

so custom-environment-variables.json:

{
    "jwtPrivateKey": "video-app_jwtPrivateKey",
    "db": "video-app_db"
}

成为:

{
    "jwtPrivateKey": "videoapp_jwtPrivateKey",
    "db": "videoapp_db"
}

Heroku docs

  

配置var策略

     
      
  • Config var键应仅使用字母数字字符和下划线字符(_),以确保所有用户都可以访问它们   编程语言。 配置var键不应包含连字符   字符。
  •   
  • 每个应用的配置var数据(所有键和值的组合)不能超过32kb。
  •   
  • 配置var键不应以双下划线(__)开头。
  •   
  • 除非由Heroku平台本身设置,否则配置变量的密钥不应以HEROKU_开头。
  •   

答案 2 :(得分:0)

所以,我遇到了同样的问题:我部署了我的应用程序,在Heroku中设置了环境变量,但是没有任何效果(不同于本地机器,一切都很好)。
似乎问题出在我不小心将所有node_modules文件夹添加到了git中。发生这种情况的原因是,在进行首次提交后(如果我没做错的话)我创建了一个.gitignore文件。

我所做的对我有用: 我从git中删除了node_modules并已提交/推送了对Heroku的更改:

git rm -rf node_modules

然后提交并推送。

这是我收到的错误消息:

错误:/app/node_modules/bcrypt/lib/binding/bcrypt_lib.node:无效的ELF标头

我花了两天时间才弄清楚。
希望对您有所帮助。