节点dotenv不起作用

我正在尝试使用节点dotenv模块,它不适合我。 我有一个文件在config / config.js与以下内容:

'use strict'; var dotenv = require('dotenv'); dotenv.load(); console.log('config'); 

我的应用程序文件夹的根目录下还有一个名为.env的文件。 我也有像TWILIO_ACCOUNT_SID这样的环境variables。 这是我在尝试在某个函数中使用环境variables时所经历的过程:

 Omes-MacBook-Pro:sidetime ome$ node > require('./config/config.js'); config {} > process.env.TWILIO_ACCOUNT_SID undefined 

我在我的.env文件中定义了TWILIO_ACCOUNT_SID,但是一旦我尝试在控制台上输出这个值,我就会得到一个未定义的错误。 如果您对如何解决这个问题有什么build议,我会非常感激。

我没有把我的环境variables以正确的格式,如在dotenv模块文件中,例如我正在导出TWILIO_CALLER_ID =“+ wwehehe”,所以dotenv模块没有正确parsing我的文件。 当我注意到,我从声明中删除了导出关键字,一切正常。

在我的情况下,每次我尝试使用process.env.MY_KEY获取一个密钥forms的.env文件时,它将返回undefined

我遭受了这个问题两个小时,只是因为我命名的文件类似keys.env它不被视为一个.env文件

所以这里是troubleshooting list

  1. 确保文件名是“.env” (我认为“.env.test”是可以接受的)

  2. 确保你要求它As early as possible在你的应用程序中使用这个语句require('dotenv').config();

  3. 确保.env文件in the root directory of your project

  4. 确保你正在按照DB_HOST=localhost这样的file writing rules ,因为不需要用双引号或双引号来包装它们

也可以在这里https://www.npmjs.com/package/dotenv查看npm站点上的软件包文档

希望这可以节省您的时间

我解决使用

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

或者使用绝对path:

 C:\\asd\\auhsd\\.env 

如果他没有find.env文件,他会留下未定义的

我有同样的问题,我尝试了4个小时find故障。 就我而言,这是奇怪的。

当我尝试“节点app.js”,它的工作。 当我想要一个守护进程启动它时,它不起作用。

我是如何解决我的问题的? 我replace了:

 var dotenv = require('dotenv'); dotenv.load(); 

有:

 var dotenv = require('dotenv').config({path: path.join(__dirname, '.env')}) 

我的问题是愚蠢的。 我在文本编辑器中创build了.env,当我保存它时,它实际上保存为

 '.env.txt' 

这是我做了一个后才可见的

 'ls -a' 

在terminal,看到了文件名。

快速:

 mv .env.txt .env 

我在做生意