Heroku local 不读取我的 .env 文件

Posted

技术标签:

【中文标题】Heroku local 不读取我的 .env 文件【英文标题】:Heroku local doesn't read my .env file 【发布时间】:2018-09-11 09:11:34 【问题描述】:

我在以下位置尝试了 heroku 节点示例: https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction

并使用 Postgres 作为数据库。

一切正常。

现在我想在本地运行它,所以我使用了以下示例: https://devcenter.heroku.com/articles/heroku-local

要将 DATABASE_URL 获取到我的 .env 文件 - 但即使我在本地运行 Heroku 时它也无法正常工作:

[OKAY] Loaded ENV .env File as KEY=VALUE Format

数据库仍然没有连接,当我添加时:

 console.log(process.env.DATABASE_URL);

它将 undefined 写入控制台。

【问题讨论】:

在遇到此问题后创建了一篇关于如何解决此问题的简短博文:jtrocinski.com/posts/Heroku-Running_a_Python_App_Locally.html 【参考方案1】:

结果由于某种原因我的 .env 文件没有使用正确的 unicode 编码。

我怀疑命令:

heroku config:get DATABASE_URL -s  >.env

在我的 Windows 机器上创建一个无效的 .env 文件。它使用 UTF-16 LE 编码创建一个文件。

我将其更改为 UTF-8 后,一切正常。

您可以在 VSCODE 中通过单击状态栏中的编码来执行此操作。

【讨论】:

当我看到您的问题和回答时,我非常兴奋,因为我在 React 应用程序中遇到了同样的问题。可悲的是,由于文件是 UTF-8,我的问题似乎有所不同。我的 .env 文件适用于 Heroku 示例项目,但不是我自己的。 @noam,有什么想法吗? @MobileVet 重命名 .env 文件 - 并创建您自己的 .env 文件并将文本从 heroku 创建的文件复制到您创建的文件中。另外-实际上我不使用 Heroku 在本地提供服务,而是使用 npm 包来读取名为“dotenv”的 .env 文件 很好的发现。 这也解决了我的问题。我发现最好使用 Git Bash 作为 VS Code 中的默认终端来避免此类错误。【参考方案2】:

回应 MobileVet 的评论:

如果它是 create-react-app,则 env var 必须以 REACT_APP_ 开头。 那为我解决了它... https://create-react-app.dev/docs/adding-custom-environment-variables/

别忘了重启。

【讨论】:

以上是关于Heroku local 不读取我的 .env 文件的主要内容,如果未能解决你的问题,请参考以下文章

将 Gatsby 部署到 Heroku... .env 变量不起作用

Heroku process.env undefined

Heroku 无法将端口号注入 process.env.PORT

.env 文件中的环境变量在 django、heroku 的本地迁移期间不可用

Heroku:process.env.NODE_ENV 未注册为“生产”(它注册为“开发”)

Heroku中的rails api instagram jquery env