如何在Node.js/ES6环境下为dotenv文件设置自定义路径?
在ES模块("type": "module")中为dotenv设置自定义.env路径
当你把项目切换为ES模块("type": "module")后,没法再用CommonJS的require('dotenv').config()写法,但依然有两种可靠方式指定自定义路径的.env文件:
方法一:导入dotenv模块并调用config方法
这是最灵活的方案,逻辑和CommonJS模式一致,只是要适配ES模块的路径处理(ES模块里没有__dirname,得通过import.meta.url推导):
import dotenv from 'dotenv'; import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; // 模拟CommonJS中的__dirname const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); // 指定自定义路径的.env文件 dotenv.config({ path: join(__dirname, './models/.env') });
方法二:通过import语句的查询参数传递路径
如果你习惯用import 'dotenv/config'的简洁写法,可以直接在import语句里加查询参数指定路径:
import 'dotenv/config?path=./models/.env';
注意这里的路径是相对于当前模块文件的相对路径,也可以直接写绝对路径。
你之前的代码为什么不生效?
你尝试的代码有两个关键问题:
- 直接调用
config()时,并没有导入这个函数(import 'dotenv/config'不会把config函数暴露到当前作用域) - 调用
dotenv.config()时,没有先导入dotenv模块,导致dotenv变量未定义
改用上面任意一种方法,就能正常加载自定义路径的.env文件。
内容的提问来源于stack exchange,提问作者myNewAccount
相关产品推荐
相关产品推荐

