1

我正在将 Meteor/Node 应用程序部署到 Heroku。我的 settings.json 中有以下几行(用于 OKGrow 分析)。

{
  "public": {
    "analyticsSettings": {
      "Google Analytics": {
        "trackingId": "12345"
      },
      "Segment.io": {
        "apiKey": "abcdef"
      }
    }
  }
}

但是,公司政策不允许我将 settings.json 签入源代码管理。有没有办法使用 Heroku 配置变量来完成这个?还有其他解决方案吗?

4

1 回答 1

4

Heroku建议通过环境变量配置您的应用程序

更好的解决方案是使用环境变量,并将密钥保留在代码之外。在传统主机上或在本地工作,您可以在bashrc文件中设置环境变量。在 Heroku 上,您使用配置变量。

幸运的是,Meteor会从METEOR_SETTINGS环境变量中加载设置:

当直接运行您的服务器时(例如,从一个包中),您可以通过将 JSON 直接放入METEOR_SETTINGS环境变量来指定设置。如果设置对象包含一个名为 的键public,那么Meteor.settings.public将在客户端和服务器上可用。的所有其他属性Meteor.settings仅在服务器上定义。即使没有指定设置,您也可以在客户端和服务器上依赖Meteor.settings和被定义的对象(不是未定义的)。Meteor.settings.public运行时的更改Meteor.settings.public将被新的客户端连接拾取。

因此,只需设置应用程序的METEOR_SETTINGS环境变量,例如通过

heroku config:set METEOR_SETTINGS="$(cat settings.json)"

在您的开发机器上,或使用 Heroku 的 Web 界面。

于 2017-12-21T23:06:22.180 回答