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

Node-config won't use variables from custom-environment-variables.json in Heroku

我正在为 mongo 连接字符串和 jwt 密钥使用 node-config 模块。

例如:

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 中设置的,但节点配置不会查看 custom-environment-variables.json 中设置的值。我可以更改 NODE_ENV 并获取相关 json 文件的硬编码值,但从未使用过环境变量,这似乎与文档相矛盾

您可以在 Heroku

中配置变量 on this way

我遇到了同样的问题。从 custom-environment-variables 中读取 heroku 需要从键中删除连字符。

所以custom-environment-variables.json:

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

变为:

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

Heroku docs:

Config var policies

  • Config var keys should use only alphanumeric characters and the underscore character (_) to ensure that they are accessible from all programming languages. Config var keys should not include the hyphen character.
  • Config var data (the combination of all keys and values) cannot exceed 32kb for each app.
  • Config var keys should not begin with a double underscore (__).
  • A config var’s key should not begin with HEROKU_ unless it is set by the Heroku platform itself.

所以,我遇到了同样的问题:我部署了我的应用程序,在 Heroku 中设置了环境变量,但没有任何效果(不像我的本地机器一切正常)。
似乎问题是我不小心将所有 node_modules 文件夹添加到 git。发生这种情况是因为我在初始提交后创建了一个 .gitignore 文件(如果我做对了)。

我所做的对我有用: 我从 git 中删除了 node_modules 并且 committed/pushed 更改为 Heroku:

git rm -rf node_modules

然后提交并推送。

这是我收到的错误消息:

Error: /app/node_modules/bcrypt/lib/binding/bcrypt_lib.node: invalid ELF header

我花了两天时间弄明白了。
希望对你有帮助。