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.PORT
.env 文件中的环境变量在 django、heroku 的本地迁移期间不可用