节点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
-
确保文件名是“.env” (我认为“.env.test”是可以接受的)
-
确保你要求它
As early as possible
在你的应用程序中使用这个语句require('dotenv').config();
-
确保
.env
文件in the root directory of your project
。 - 确保你正在按照
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
我在做生意
- dotenv-webpack是否将.env的所有环境variables公开给前端?
- 从开发切换到生产环境时,使用grunt切换HTML元素
- 节点JSvariables作用域
- 如何将Node环境variables传递给React Native JS代码
- 一旦Node.js脚本运行,是否可以获取UPDATED环境variables?
- 在express / node中使用全局variables
- Docker环境variables,dokku-redis
- Javascript中的全局variables和nodejs中的属性 – 全局属性有时会被删除?
- 如何在nodejs中parsing包含环境variables的path?