Dotenv 未加载具有正确路径的环境变量

问题描述 投票:0回答:3

我正在使用

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

我的文件夹结构是

所以它应该可以正常工作:(

node.js express dotenv
3个回答
6
投票

如果

.env
文件位于根目录,则不需要路径,但您可以定义 config 方法的返回值并检查是否发生错误

const result = dotenv.config()

if (result.error) {
  throw result.error
}

console.log(result.parsed)

来源:https://www.npmjs.com/package/dotenvconfig段落


6
投票

要将 .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);

0
投票

截至 2024 年更新

如果您有 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
© www.soinside.com 2019 - 2024. All rights reserved.