我想在Node.js中将我的.env
文件的内容读取为process.env
以外的变量。我目前正在使用dotenv
库,但如果有人提供替代方案,我愿意使用其他东西。
在我的特定.env
中,用户名和密码对将存储在服务器端以进行身份验证。我想在不覆盖process.env
的情况下读取文件内容,因为我的应用程序的其他部分依赖于未被覆盖的值。我知道override: false
在dotenv
中默认设置,因此这些值不会被覆盖,但我仍然需要访问新值。一个例子是USERNAME
在一个文件中被设置为'xterm
',用于第三方终端登录,但如果用户的用户名在dotenv文件中是'USERNAME
',那么我需要根据值验证他们的密码,而不是针对'xterm
',如果这有意义的话。
如果我能将.env
文件中的数据聚合到类似process.env.specialValues
的文件中,并通过嵌套属性访问信息,那将是完美的。
为清晰起见,期望的最终行为示例:process.env.specialValues.USERNAME
使用parse()方法将数据加载到一个变量
const { readFileSync } = require("fs");
const { resolve } = require("path");
const { parse } = require("dotenv");
const env = parse(readFileSync(resolve(process.cwd(), ".env")));
或者如果你使用ES模块
import { readFileSync } from "node:fs";
import { resolve } from "node:path";
import { parse } from "dotenv";
const env = parse(readFileSync(resolve(process.cwd(), ".env")));