📜  .env 文件 vars nto 在子目录中定义 - Javascript (1)

📅  最后修改于: 2023-12-03 14:38:46.318000             🧑  作者: Mango

'.env 文件 vars not defined in subdirectory - Javascript'

在使用Node.js时,我们通常需要使用.env文件来存储环境变量。但是,可能会遇到一个问题,在子目录中的文件中使用环境变量定义时,会提示变量未定义的错误。本文将为您介绍如何解决这个问题。

首先,需要明确一个概念,就是Node.js中的路径问题。

在Node.js中,使用相对路径时,是相对于当前文件所在的目录来计算的。例如,假设我们的项目结构如下:

project/
├── .env
├── main.js
└── sub/
    └── sub.js

main.js中,我们可以通过const dotenv = require('dotenv').config()来加载.env文件中的环境变量。但是,在sub.js中,我们不能直接使用dotenv来获取环境变量,因为sub.js是在sub/目录下的,而不是在project/目录下的。

所以,我们需要将.env文件的路径设置为相对于项目根目录的路径。在这个例子中,.env文件路径应该设置为./.env,而不是./sub/.env

代码示例:

// main.js
const dotenv = require('dotenv').config()

// sub/sub.js
const dotenv = require('dotenv').config({ path: '../.env' })

console.log(process.env.MY_VAR) // 输出环境变量 MY_VAR

sub.js中,我们需要明确指定.env文件的路径,即../.env

需要注意的是,在使用dotenv.config()时,如果不传入path参数,会默认加载当前目录下的.env文件。如果需要使用其他路径下的.env文件,需要传入path参数。

总结:

在使用.env文件时,如果遇到在子目录中使用环境变量导致未定义的错误,需要注意设置.env文件的路径,设置为相对于项目根目录的路径。在子目录中需要明确指定.env文件的路径,或者在使用dotenv.config()时传入path参数。

参考链接: