【问题标题】:Node-config won't use variables from custom-environment-variables.json in HerokuNode-config 不会使用 Heroku 中 custom-environment-variables.json 中的变量
【发布时间】:2019-06-22 04:21:47
【问题描述】:

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

【问题讨论】:

  • 您的本地环境中是否也会发生这种情况?看起来像是重写了变量 env。

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


【解决方案1】:

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

所以 custom-environment-variables.json:

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

变成:

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

Herokudocs:

配置变量策略

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我想我已经正确地创建了变量。键入 heroku config:get video-app_db 按预期返回变量。但是,在我的代码中使用 node-config 到 config.get('db') 会返回来自 default 或 production.json 的值,而不是 custom-environment-variables.json 文件。我猜这似乎是节点配置的问题?我将编辑我的标题以反映这一点
    • 如果您怀疑问题出在node-config,您可以自己设置环境变量(不使用Heroku),看看它是否有效。我相信你会发现它确实如此。这个问题似乎是 Heroku 特有的。
    【解决方案3】:

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

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

    git rm -rf node_modules
    

    然后提交并推送。

    这是我收到的错误消息:

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

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

    【讨论】:

      猜你喜欢
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多