我正在使用
dotenv
库,但我的环境变量返回未定义
这是
app.ts
:
require('dotenv').config({path: '/.env'});
console.log(process.env.MAIN_DB_PATH) // returns undefined
这是我的
.env
文件:
MAIN_DB_PATH=./data/database.db
UPLOAD_MULTER_DIR=./module/car/uploads
我的文件夹结构是
所以它应该可以正常工作:(
如果
.env
文件位于根目录,则不需要路径,但您可以定义 config 方法的返回值并检查是否发生错误
const result = dotenv.config()
if (result.error) {
throw result.error
}
console.log(result.parsed)
来源:https://www.npmjs.com/package/dotenvconfig段落
要将 .env 文件加载到不同的目录中,您需要提供该文件的绝对路径。
__dirname
:需要加载 .env 文件的文件目录的绝对路径(本例中为 app.ts)..
:升一级然后
path.resolve
将为您提供.env文件的绝对路径
const path = require('path');
require("dotenv").config({ path: path.resolve(__dirname, '..', '.env') });
console.log(process.env.MAIN_DB_PATH);
如果您有 Node.js 20.6.0 或更高版本,该功能是内置的,您不必再使用 dotenv 包。
使用目录中的
.env
文件:
MAIN_DB_PATH=./data/database.db
UPLOAD_MULTER_DIR=./module/car/uploads
您可以使用
--env-file
选项将这些变量设置为环境变量:
node --env-file .env index.js
然后您可以从
process.env
对象访问环境变量:
console.log(process.env.MAIN_DB_PATH)
运行该文件会产生以下结果:
// Output
./data/database.db