【问题标题】:How to write to enviornment variables on Heroku如何在 Heroku 上写入环境变量
【发布时间】:2021-12-01 13:40:37
【问题描述】:

我创建了一个仅供一个人使用的网站,所以我想动态地写入 Heroku 上的 .env 文件而不让它休息,
因为这仅适用于一个人。我不想处理数据库。

类似这样的:

require(`dotenv`).config();

console.log(process.env.MYVAL); // Not my value
process.env.MYVAL = "MYVAL"
console.log(process.env.MYVAL); // MYVAL

【问题讨论】:

  • 我建议寻找其他解决方案。 local storage呢?
  • 诚然这很酷,但我想在缓存重置后坚持不清除,而且验证脚本在服务器端
  • #1 什么是网站管理? #2 您是否需要在运行时更改任何环境变量而无需重新启动? #3 你在哪里使用那个变量?只是为了使用一些模板渲染 html 或连接到数据库?
  • #1 保留一个秘密值以证明它是授权用户(哈希密码)#2 是的 - 显然 #3 你可能知道这是怎么回事
  • 这是 100% 的 XY problem。你为什么要这样做?你想达到什么目的?环境变量用于维护状态(这在 Heroku 上的工作特别糟糕,因为 dynos 一直被丢弃)。

标签: javascript node.js heroku environment-variables env-file


【解决方案1】:

您需要持久化数据(即使它是单个值)。因此,您不应写入 Heroku 文件系统,也不应将其存储在环境变量(Heroku 配置变量)中。

我知道使用数据库可能不值得,在这种情况下,我会使用外部文件存储(Amazon S3Dropbox,甚至使用 GitHub 私有存储库)。

Files on Heroku上,您可以看到一些选项和(Python)代码。

【讨论】:

  • 你的答案是正确的,但任何代码示例在 node.js 中都将不胜感激
  • 我用过 Python 和 Java,但是如果你想使用 Dropbox,这是一个很好的参考(你可以有一个免费帐户),dropbox.tech/developers/…
  • 嘿只是为了通知您 dropbox.js 链接已损坏,而且我对 github 私人仓库很感兴趣
  • 啊,好吧,我假设保管箱是正确的远程文件存储。确实可以使用 GitHub 私有仓库,我已经在 Python 中完成了这项工作,但我相信您也可以在 JS 中搜索/查找示例。工作流程类似。
  • 在您的 Medium 博客文章中:1) GithubGitHub 2) Gitlab@ 987654326@
【解决方案2】:

您可以在 Heroku 仪表板的设置选项卡中设置环境变量,也可以使用命令行。请查看以下文档以获取更多信息。

Configuration and Config Vars

【讨论】:

  • 是的,我知道,但这不是我想要的,我想以编程方式将 env var MYVAL 覆盖为“MYVAL”,并且 envfile 将无法工作,因为 heroku 的文件系统是临时性的,所有更改都将恢复为原始文件
  • @Ashwin,我向您保证,您设置的任何环境变量会在您的 dyno 重新启动时丢失,就像临时文件系统一样。您不能以这种方式维护状态。
  • 这就是问题
猜你喜欢
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-16
  • 1970-01-01
  • 2021-07-30
  • 1970-01-01
相关资源
最近更新 更多