Node.js 在不重新启动应用程序的情况下设置Heroku环境变量

Node.js 在不重新启动应用程序的情况下设置Heroku环境变量,node.js,git,heroku,environment-variables,Node.js,Git,Heroku,Environment Variables,是否可以在不重新启动应用程序的情况下设置Heroku环境变量 我的应用程序通过OAuth2连接到不同的在线服务。对于我连接到的每个服务,我需要设置OAuth2 ID和密码。为了将这些配置变量保留在代码之外,我使用了环境变量,并在process.env(node.js)中读取它们 每次我向我的应用程序添加新服务时,我都需要为ID和secret添加相应的环境变量。在推送最新代码之前,我需要这样做,这样当应用程序下一次启动新的服务连接时,OAuth2 ID和secret变量就可用了 目前我的工作流程如

是否可以在不重新启动应用程序的情况下设置Heroku环境变量

我的应用程序通过OAuth2连接到不同的在线服务。对于我连接到的每个服务,我需要设置OAuth2 ID和密码。为了将这些配置变量保留在代码之外,我使用了环境变量,并在
process.env
(node.js)中读取它们

每次我向我的应用程序添加新服务时,我都需要为ID和secret添加相应的环境变量。在推送最新代码之前,我需要这样做,这样当应用程序下一次启动新的服务连接时,OAuth2 ID和secret变量就可用了

目前我的工作流程如下:

  • 使用Heroku工具带设置环境变量:
    Heroku配置:Set\u ID=foo\u SECRET=bar
  • 推送最新代码:
    git推送heroku master
  • 目前,这两项操作都将重新启动应用程序。我真的希望第一个操作不重新启动应用程序,因为对这些配置变量的更改在步骤2)之前不需要生效。通过在步骤1)重新启动,我的应用程序将经历不必要的停机

    那么,有没有办法阻止步骤1)重新启动应用程序呢?

    根据它相当明确地指出

    无论何时设置或删除配置变量,应用程序都将重新启动


    就我个人而言,我也希望有一种方法来满足你的要求。在更大的应用程序上,当运行多种进程类型时,系统范围的硬重启可能会很痛苦。很多时候,我设置了一些环境变量,这些变量对于应用程序立即获取信息并不重要,例如涉及未来功能的环境变量,或者设置为可以使用旧值,但希望新值以滚动重启方式生效的环境变量。

    目前,无法避免应用程序重启。但是您可以使用命令heroku config:edit一次编辑您的环境,甚至粘贴一个新的环境集,避免多次重新启动

    在中,根据heroku配置帮助:

    (…)
    命令
    配置:交互编辑编辑配置变量
    配置:获取并显示应用程序的单个配置值
    配置:设置一个或多个配置变量
    配置:取消设置一个或多个配置变量
    
    这样你就可以跑了

    heroku config:edit
    
    此外,您可能想看看这个问题(提案):

    无法更改正在运行的进程的环境变量。你只能在应用程序中操作它。但是,如果你需要在应用程序已经运行的情况下更改环境变量,那么你肯定是做错了。谢谢你的评论,但是如果你注意到的话,我实际上是在添加环境变量,而不是更改现有的环境变量。所以我不认为这算是“做错了什么”?在应用程序已经运行之后,您正在设置服务机密。对我来说,服务秘密是一种在应用程序运行时不应该改变的配置。但是,这是尚未部署的服务的服务机密。所以它不应该影响其他任何事情。我在这里真正想要的是部署一个新服务,并将该服务的env vars设置为原子操作,即只导致单个应用程序重新启动的操作。这是向heroku提出的吗?