如何在Heroku应用程序中添加.env文件或以其他方式设置环境变量?

如何在Heroku应用程序中添加.env文件或以其他方式设置环境变量?,heroku,Heroku,对于这个问题,我在网上尝试了许多不同的解决方案,但都没有成功 问题是:我的应用程序需要知道它是在Heroku(生产模式)还是本地(开发模式)上运行。为此,我们希望使用环境变量。我知道Heroku上的环境变量可以在.env文件中设置。因此,我的尝试是运行heroku run bash-a,然后通过执行以下操作安装vim: mkdir ~/vim cd ~/vim # Staically linked vim version compiled from https://github.com/eri

对于这个问题,我在网上尝试了许多不同的解决方案,但都没有成功

问题是:我的应用程序需要知道它是在Heroku(生产模式)还是本地(开发模式)上运行。为此,我们希望使用环境变量。我知道Heroku上的环境变量可以在
.env
文件中设置。因此,我的尝试是运行heroku run bash-a,然后通过执行以下操作安装vim:

mkdir ~/vim
cd ~/vim

# Staically linked vim version compiled from https://github.com/ericpruitt/static-vim
# Compiled on Jul 20 2017
curl 'https://s3.amazonaws.com/bengoa/vim-static.tar.gz' | tar -xz

export VIMRUNTIME="$HOME/vim/runtime"
export PATH="$HOME/vim:$PATH"
cd -
除了反复崩溃之外,当我登录和退出shell时,vim不再工作:

~ $ vim // in the heroku shell
vim: error while loading shared libraries: libXt.so.6: cannot open shared object file: No such file or directory
我还尝试了heroku插件:安装heroku vim,但之后运行了heroku vim,这只会导致很长的延迟,随后是正常的heroku外壳打开,没有vim

我真的不在乎我是否让维姆去工作。我只想能够在Heroku上写一个名为
.env
的文件,以便在其中设置环境变量


如何实现这一点?

Heroku上不需要
.env
文件。事实上,这样一个文件将不会很好地工作,因为

  • Heroku从您的Git存储库获取所有文件
  • 具有,这意味着对
    .env
    等文件的更改将很快丢失,并且
  • 如果您缩放应用程序,则
    .env
    文件将无法在其他dynos上使用
因此,在Heroku上创建
.env
文件不是一个好方法


相反,您可以使用its,使用
heroku config:set
或其web UI。无论哪种方式,您都会得到一个常规环境变量。

只需在显示配置中定义键和值即可。和你在.env上的方式一样。必须将.env文件传输到github是不安全的。 例如 Paystack\u payment\u url作为密钥 作为值。

它相当简单。 正如您在.env文件中添加它们一样,对heroku的命令行执行相同的操作,您将看到heroku重新启动,并且您将再次飞行。 只需使用以下命令: (heroku config:set VARIABLE=此_为_值)
请记住在值中使用下划线,因为不允许使用空格,也不允许使用倒引号(“”)将其转换为单个字符串。

您是否尝试过从UI(即应用程序的heroku仪表板)运行它,转到“设置”并设置环境变量?安装Vim与设置环境变量有何关系?对不起,也许我应该解释一下。其目的是使用vim创建一个.env文件。但我最后只是做了
echo“NODE_ENV=production”>>。ENV
instead@Sahand,那不行。Heroku短暂的文件系统将导致该文件很快丢失。此外,如果你扩展你的应用程序,
.env
文件在其他dynos上将不可用。但是为了在本地测试这些配置变量,我们需要设置一个.env文件,正如Heroku在这里建议的那样:@ASR4,这是本地开发的一个选项。不过,任何设置环境变量的方法都可以。在任何情况下,这个问题都是专门针对Heroku设置的。我实际上也在努力实现同样的目标。我已在项目的根目录中创建了一个.env文件,并尝试使用System.getenv()访问它。但是我得到了一个空值。关于我可能缺少的东西有什么线索吗?谢谢。@ASR4,
.env
文件不是魔法。您需要一个工具来读取它并将值注入到应用程序的环境中。您是否通过heroku local或其他方式运行应用程序?我猜你在使用Java?如果需要跟踪.env文件,请检查你的gitignore。或者,答案所建议的heroku ui也可以很好地工作。