dotenv文件未加载环境变量

时间:2017-02-20 01:15:27

标签: javascript node.js laravel-dotenv

我在根文件夹文件中有.env文件

bin

NODE_ENV=development NODE_HOST=localhost NODE_PORT=4000 NODE_HTTPS=false DB_HOST=localhost DB_USERNAME=user DB_PASSWORD=user 文件夹中的server.js文件。 root/app/config/server.js文件的第一行是

server.js

我也尝试过:

require('dotenv').config();;

require('dotenv').config({path: '../.env'});

但是,运行require('dotenv').config({path: '../../.env'})文件时,我的env变量未加载 来自命令提示符

server.js

如果我使用 visual studio 并按 F5 ,它会加载!!

我不确定我做错了什么,我错过了什么。 任何建议都非常感谢。感谢。

12 个答案:

答案 0 :(得分:18)

如何使用require('dotenv').config({path:__dirname+'/./../../.env'})

您的问题似乎是执行路径。

答案 1 :(得分:3)

在上面的答案中添加一点细微差别 - 如果您从嵌套文件调用dotenv,并且您的.env文件位于项目根目录,那么您想要连接点的方式是通过以下内容:

require('dotenv').config({path:'relative/path/to/your/.env'})

答案 2 :(得分:2)

这解决了我在节点v8.14.1中的问题:

const path = require('path')
require('dotenv').config({ path: path.resolve(__dirname, '../.env') })

仅执行require('dotenv').config({path:__dirname+'/./../../.env'})会导致一个位置解析为/some/path/to/env/./../../.env

答案 3 :(得分:2)

我遇到了这个问题,结果发现REACT仅加载以REACT_APP_开头的变量

VueJ可能会遇到类似的问题,因为它期望变量使用前缀:VUE_APP _

答案 4 :(得分:2)

试试这个:

const dotenv = require('dotenv');
dotenv.config({ path: process.cwd() + '/config/config.env' });

如何为我工作??

答案 5 :(得分:1)

这为我解决了这个问题:

const path = require('path');
require('dotenv').config({
  path: path.resolve('config.env'),
});

答案 6 :(得分:0)

这是另一个不错的选择:

require('dotenv').config({ path: require('find-config')('.env') })

这将递归父目录,直到找到要使用的.env文件。

您也可以使用受上述一线启发而来的名为ckey的模块。

.env主目录中的文件。

# dotenv sample content
USER=sample@gmail.com
PASSWORD=iampassword123
API_KEY=1234567890

子目录中的一些js文件

const ck = require('ckey');

const userName = ck.USER;     // sample@gmail.com
const password = ck.PASSWORD; // iampassword123
const apiKey   = ck.API_KEY;  // 1234567890

答案 7 :(得分:0)

一次,我遇到了同样的问题。 Dotenv没有加载.env文件。我试图用路径配置解决此问题,将.env文件放在根文件夹中,将.env放在文件正在运行的文件夹中,没有任何帮助。然后我只是丢弃Node_modules文件夹,重新安装所有依赖项,它就可以正常工作

答案 8 :(得分:0)

在我看来,.env很好,但.env.local没问题。

package.json命名为.env.env.localcp ./.env.local .env)解决了这个问题:

  "myscript": "cp ./.env.local .env && node ./scripts/myscript.js"

答案 9 :(得分:0)

在您到达此地的遥远情况下,我的问题很愚蠢: 我错误地用冒号“:”而不是等号“ =”来命名我的环境变量。新秀错误,但导致的行为是未加载拼写错误的变量分配。

# dotenv sample content

# correct assignment
USER=sample@gmail.com

# wrong assignment (will not load env var)
USER : sample@gmail.com

答案 10 :(得分:0)

@DavidP 的回答注释中的一个注释记录了使用 console.log(require("dotenv").config()) dotenv.config 的输出。这将输出配置日志并显示错误。在我的情况下,它表明配置方法正在引用当前目录而不是 包含我的 .env 文件的父目录。我可以参考以下内容

require('dotenv').config({path: '../.env'})

答案 11 :(得分:0)

只需添加

require("dotenv").config();

到您的应用程序的索引,它将找到您的 .env 文件,然后您可以在代码中的任何位置使用 process.env.YOUR_ENV