我无法从server.js server.js以外的任何地方访问.env文件,我试图在db.js db.js和db.js config.js中访问它
我试过了,它的工作,但任何更好的和简单的方法吗?.
import dotenv from "dotenv";
import { fileURLToPath } from 'url';
import path from "path";
const __filename = fileURLToPath(import.meta.url);
const envPath = path.resolve(path.dirname(__filename), "../../backend/.env");
dotenv.config({ path: envPath });
var password = process.env.password;
console.log(password);
2条答案
按热度按时间ac1kyiln1#
您不需要在每个文件中设置dotenv。在server.js中导入
app
之前,必须执行dotenv.config()。例如:这将工作:
7rtdyuoh2#
您提供的代码是一种合理的方法,可以在您与特定的
.env
文件不在同一目录时从该文件加载环境变量。但是,您可以进行一些改进来增强其可读性和可维护性。1.使用
__dirname
:您可以直接使用__dirname
获取当前模块的目录,而不是使用path.resolve(path.dirname(__filename), ...)
构建envPath
。这是Node.js提供的一个内置属性。使用
__dirname
使其更明确,更容易理解。1.错误处理:从文件加载环境变量时处理潜在错误是一个很好的做法。如果
.env
文件不存在,或者阅读它时出现问题,您应该捕获这些错误并进行适当的处理。这可以确保您的代码正常处理缺失的
.env
文件。通过进行这些改进,您的代码将更加有组织,并且能够更好地应对潜在的问题。