我有一个本地有.env
文件的项目。当我在本地机器上设置环境变量时,我使用:
import dotEnv from "dotenv";
dotEnv.config();
找到.env
并加载所有变量。当我将项目推送到Heroku时,我没有推高.env
文件。我希望dotEnv
能够理解这一点,但我收到了这个错误:
{ Error: ENOENT: no such file or directory, open '.env'
我如何解决这个问题?我没有推高.env
档案?使用.dotEnv
的正确方法是什么?
答案 0 :(得分:1)
我是dotenv模块的贡献者。您可以放心地忽略此错误。如果某些东西没有按预期工作,则会返回以方便您使用。
答案 1 :(得分:0)
我不太喜欢这里提出的解决方案:https://github.com/motdotla/dotenv/issues/126这相当于有条件地要求/ dotenv,具体取决于所设置的环境变量。这看起来很脆弱,对我来说也是额外的工作。
我发现的最新解决方案并没有对dotenv的任何引用污染我的生产代码。只需在您的开发依赖项中包含dotenv,然后使用节点需要开关在本地运行您的应用程序:
$ node -r dotenv/config ./lib/index.js
这与加载babel-register的方式相同。
现在你的代码并不关心env变量的来源。也适用于nodemon等。您甚至可以指定备用env文件:
$ node -r dotenv/config your_script.js dotenv_config_path=/custom/path/to/your/env/vars
这一切都在包的npm页面上。