Dotenv文件未加载环境变量

aiqt4smr  于 2022-09-18  发布在  Java
关注(0)|答案(20)|浏览(280)

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

NODE_ENV=development
NODE_HOST=localhost
NODE_PORT=4000
NODE_HTTPS=false
DB_HOST=localhost
DB_USERNAME=user
DB_PASSWORD=user

root/app/config/server.js文件夹中的server.js文件。server.js文件的第一行是

require('dotenv').config();

我还尝试了以下几点:

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

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

  • 然而,当我从命令提示符运行server.js文件时,我的环境变量没有加载**

node root/app/config/server.js

如果我使用VISUAL STUDIO并按F5,它会加载!!

我不确定我做错了什么,错过了什么。任何建议都将受到高度赞赏。谢谢。

uidvcgyl

uidvcgyl16#

@DavidP的回答笔记中的一条注解使用以下命令记录dotenv.config的输出

console.log(require("dotenv").config())

这将输出配置日志并显示错误。在我的例子中,它表明配置方法引用的是当前目录,而不是包含我的.env文件的父目录。我可以用以下几点来参考

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

tvokkenx17#

我遇到过这个问题,结果是Reaction只加载前缀为REACTION_APP_的变量

VueJ可能会出现类似的问题,因为它希望变量带有前缀:VUE_APP_

arknldoa

arknldoa18#

如果您要从嵌套文件调用dotenv,并且您的.env文件位于项目根目录,则您希望通过以下方式连接这些点:

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

htzpubme19#

以下是单行解决方案:

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
lpwwtiir

lpwwtiir20#

这解决了我在节点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的位置

相关问题