我在根文件夹文件中有.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 ,它会加载!!
我不确定我做错了什么,我错过了什么。 任何建议都非常感谢。感谢。
答案 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.local
(cp ./.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