我在根文件夹文件中有.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,它会加载!!
我不确定我做错了什么,错过了什么。任何建议都将受到高度赞赏。谢谢。
20条答案
按热度按时间0s7z1bwu1#
这就解决了我的问题:
x6h2sr282#
如果没有任何帮助,请将.env放在src文件夹之外(如果您的文件夹结构如下
i2byvkas3#
我正在使用:
hs1ihplo4#
我犯了一个愚蠢的错误,我用冒号“:”代替了“=”
我在下面用过
用户:超级用户
但它应该是
用户=超级用户
myss37ts5#
如果您正在使用其他工具(全局安装)在某个地方调用您的配置文件,请仅使用绝对路径...
pu3pd22g6#
您可能需要.env文件相对于启动应用程序的当前工作目录的路径。您可以按如下方式创建此路径:
process.cwd()
返回工作目录的绝对路径。__dirname
返回应用程序的绝对路径。path.join()
将.env文件的路径添加到应用程序的路径中。因此,如果您的.env文件嵌套得更深,只需添加文件夹(例如path.join(__dirname, 'config', 'secret','.env')
)path.relative()
创建相对路径。ukxgm1gy7#
有一次我也遇到了同样的问题。Dotenv没有加载.env文件。我试着用路径配置来解决这个问题,把.env文件放在根文件夹中,把.env放在运行该文件的文件夹中,但没有任何帮助。然后我刚刚销毁了Node_MODULES文件夹,重新安装了所有依赖项,它工作正常
xriantvc8#
在我的例子中,
.env
读得很好,但不是.env.local
。将
package.json
命名为.env
,更新为.env.local
(cp ./.env.local .env
)解决了问题:0yycz8jy9#
6ss1mwsb10#
您可以首先使用
console.log(require('dotenv').config())
进行调试。在我的场景中,我的.env文件在根目录中,我需要在嵌套目录中使用它。结果是{ parsed: { DATABASE_URL: 'mongodb://localhost/vidly', PORT: '8080' } }
。因此,我只需解析结果并将其存储在变量const dotenv = require('dotenv').config().parsed;
中。然后像访问JS对象一样访问我的DATABASE_URL:dotenv.DATABASE_URL
ef1yzkbh11#
使用
require('dotenv').config({path:__dirname+'/./../../.env'})
怎么样?你的问题似乎出在执行路径上。
sbdsn5lh12#
这让我摸不着头脑,而将REQUIST语句的输出记录到控制台的技巧真的很有帮助。
console.log(require('dotenv').config());
原来我用
nodemon application_name/.
从我的用户/目录运行我的应用程序,这让dotenv在我的主目录中寻找.env文件,而不是应用程序的目录。我很懒,跳过了一个cd
,这花了我几分钟的时间。ma8fv8wu13#
确保在条目文件的开头加载
.env
(例如index.js
或server.js
)。有时,执行顺序会在服务启动后加载环境变量。而且,通过使用__dirname
,它可以轻松地指向相对于当前文件所需的文件。这里我的项目结构是这样的。
nkoocmlb14#
试试这个:
为我工作过吗??
u4dcyp6a15#
在到目前为止的远程情况下,我的问题相当愚蠢:我错误地将我的环境变量命名为冒号“:”而不是等号“=”。菜鸟错误,但导致的行为不是加载拼写错误的变量赋值。