3

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

4

3 回答 3

1

您可以在 Heroku 中以这种方式配置变量

于 2019-01-29T13:10:34.853 回答
1

我遇到过同样的问题。Heroku 需要从键中删除连字符才能从自定义环境变量中读取。

所以自定义环境变量.json:

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

变成:

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

Heroku文档

配置变量策略

  • Config var 键应仅使用字母数字字符和下划线字符 (_),以确保它们可从所有编程语言访问。Config var 键不应包含连字符。
  • 每个应用的配置变量数据(所有键和值的组合)不能超过 32kb。
  • Config var 键不应以双下划线 (__) 开头。
  • 配置变量的键不应该以 HEROKU_ 开头,除非它是由 Heroku 平台本身设置的。
于 2019-06-03T17:57:37.317 回答
0

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

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

git rm -rf node_modules

然后提交并推送。

这是我收到的错误消息:

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

我花了两天时间试图弄清楚。
我希望它会有所帮助。

于 2020-05-30T17:24:22.317 回答