Node.js中如何加载不同.env文件并存储到独立对象中
如何将不同.env文件的内容存储到独立变量中(不写入process.env)
要实现将不同.env文件的内容存储到独立变量,无需使用会自动修改process.env的dotenv.config(),而是通过dotenv.parse()配合文件读取直接解析内容为独立对象:
const dotenv = require('dotenv'); const fs = require('fs'); // 读取并解析生产环境.env文件 const prodEnvContent = fs.readFileSync('.env.production', 'utf8'); const productionEnv = dotenv.parse(prodEnvContent); // 读取并解析开发环境.env文件 const devEnvContent = fs.readFileSync('.env.development', 'utf8'); const developmentEnv = dotenv.parse(devEnvContent); // 直接使用独立变量中的环境变量 console.log(productionEnv.VARIABLE_FROM_ENV_PRODUCTION); console.log(developmentEnv.VARIABLE_FROM_ENV_DEVELOPMENT);
核心要点:
fs.readFileSync()用于同步读取.env文件内容(异步场景可改用fs.readFile()搭配Promise)dotenv.parse()会将读取到的.env文本解析为键值对对象,完全不会改动process.env- 每个.env文件的内容都存放在独立变量中,互相隔离,避免变量冲突
如果需要处理文件读取异常,可以封装成工具函数:
const dotenv = require('dotenv'); const fs = require('fs'); function loadEnvFile(path) { try { const content = fs.readFileSync(path, 'utf8'); return dotenv.parse(content); } catch (err) { console.error(`加载.env文件失败:${path}`, err); throw err; } } const productionEnv = loadEnvFile('.env.production'); const developmentEnv = loadEnvFile('.env.development');
内容的提问来源于stack exchange,提问作者Alexander Mills
相关产品推荐
相关产品推荐

