【问题标题】:Heroku node.js - no such file or directory, open '.env'Heroku node.js - 没有这样的文件或目录,打开'.env'
【发布时间】:2016-07-06 00:01:25
【问题描述】:

我使用 node.js 构建了一个应用程序并将其部署到 heroku,但我的 heroku 日志中不断出现错误:

{ [Error: ENOENT: no such file or directory, open '.env'] errno: -2, code: 'ENOENT', syscall: 'open', path: '.env' }

这意味着它缺少环境变量。但是,我确实在 heroku/dashboard/config_vars 中设置了我的环境变量。此外,如果我输入:heroku config,它会显示我的环境变量列表...

有谁知道可能发生什么或我能做什么?

注意 - 我在 '.gitignore' 中添加了 '.env'。

提前谢谢!

【问题讨论】:

标签: node.js heroku


【解决方案1】:

听起来您正试图在代码中的某个位置打开 .env 文件。

你不应该那样做。 要访问名为 MY_ENV_VAR 的环境变量,只需参考 node.js 代码中的 process.env.MY_ENV_VAR。

将.env添加到.gitignore是正确的。

在您的开发环境中,您可以在 .env 中设置环境变量的值。这些将通过“heroku local”或“foreman start”传递给您的应用。

在 Heroku 上,您可以通过“heroku config”(或通过 Heroku 仪表板)设置环境变量的值,就像您所做的那样。

底线:您所做的一切都是正确的,除了您的 node.js 应用程序似乎试图显式打开 .env 文件这一事实。这是一个错误!

【讨论】:

  • hmm.. 我使用环境变量的任何页面,我都有require('dotenv').load();... 这会是原因吗?
  • 是的,这就是问题所在。我相信 DotEnv 库默认会查找 .env 文件。由于它在您的 .gitignore 中,因此 .env 文件不会推送到 Heroku。
【解决方案2】:

我遇到了同样的问题。这是我如何解决的:

npm rm dotenv  
npm install -g foreman  
npm install foreman --save  

全部注释掉:

require('dotenv').load();  

【讨论】:

  • 这假设你的根目录中有一个 Procfile。
【解决方案3】:

另一个对我有用的选项是更新 package.json 中的 dotenv。

【讨论】:

    猜你喜欢
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 2018-11-12
    相关资源
    最近更新 更多