我正在尝试使用节点dotenv模块,它不适合我.我在config/config.js上有一个文件,其中包含以下内容:
'use strict';
var dotenv = require('dotenv');
dotenv.load();
console.log('config');
我的app文件夹的根目录下也有一个名为.env的文件.我也有像TWILIO_ACCOUNT_SID这样的环境变量.这是我尝试在某个函数中使用环境变量时经历的过程:
$ node > require('./config/config.js'); config {} > process.env.TWILIO_ACCOUNT_SID undefined
我在.env文件中定义了TWILIO_ACCOUNT_SID,但是当我尝试在控制台上输出值时,我得到的错误是未定义的.如果您对如何解决此问题有任何建议,我将非常感激.
在我的情况下,每次我尝试使用密钥表单.env文件时.env
,它返回process.env.MY_KEY
因为我将文件命名undefined
为不被认为是keys.env
文件,我在这个问题上遭受了两个小时的困扰
所以这是 .env
确保文件名是".env"(我认为".env.test"是可以接受的)
.env
使用此声明确保您在申请中要求它.env.test
确保require('dotenv').config();
文件是.env
.
确保你遵循DB_HOST=localhost
这样的.env
,因为不需要用双引号或单引号将它们包起来
另请查看npm网站上的软件包文档https://www.npmjs.com/package/dotenv
希望这能节省您的时间
我没有像在dotenv模块文档中那样将我的环境变量放在正确的格式中,例如我正在导出TWILIO_CALLER_ID ="+ wwehehe",因此dotenv模块没有正确解析我的文件.当我注意到我从声明中删除了export关键字,一切正常.
我解决了使用
require('dotenv').config({path: __dirname + '/.env'})
或使用绝对路径:
C:\\asd\\auhsd\\.env
如果他没有找到.env文件,他会离开undefined
我有同样的问题。我意识到我的文件是以某种方式编码的UCS-2 BE BOM
。将我的.env
文件转换为UTF-8
固定的文件(例如,您可以使用Notepad ++轻松地完成该操作)。
确保尚未设置变量。Dotenv不会覆盖它们。
如果设置了变量,则必须将其删除。在powershell中,您可以使用以下命令- 如此处所述:
Remove-Item Env:\MyTestVariable
为您节省一些故障排除时间并记录您的需求呼叫,例如:
console.log(require('dotenv').config())
您应该看到一个错误,其中包含有关该问题的更多详细信息。
最近有同样的问题.请检查.env文件并执行以下操作:
key=value
代替
key:value