process.env 变量 returns 未在特定文件中定义

process.env variable returns undefined from a specific file

我有一个名为 dev.js 的配置文件,其中包含一个对象,该对象具有一个名为 dbURL 的键,该键包含 MongoDB 的数据库 url。完全是这个样子。

export const config = {
    dbURL: 'mongodb+srv://...'
}

我有另一个名为 db.js 的文件,我在其中导入上面的 dev.js 文件并使用 dbURL 键连接到数据库。

import { connect as _connect } from 'mongoose';
import {config} from '../config/dev';

const connect = (url = config.dbURL, opts = {}) => {
    return _connect(
        url,
        {}, err => {
            if (err) throw err;
            console.log('Connected to MongoDB!')
        }
    )
}
export default connect;

问题是,如果我尝试将 dev.js 文件中 dbURL 的值更改为 process.env.DEV_DB,例如。

export const config = {
    dbURL: process.env.DEV_DB
}

.env 文件看起来像这样

DEV_DB = "mongodb+srv://...."

它实际上 returns undefined,尽管我尝试在 db.js 文件中 console.log(process.env.DEV_DB) 并且它正常打印数据库 url。

import { connect as _connect } from 'mongoose';
import {config} from '../config/dev';

const connect = (url = config.dbURL, opts = {}) => {
    console.log(config) //logs {dbURL: undefined}
    console.log(process.env.DEV_DB) //logs the database url normally
    return _connect(
        url,
        {}, err => {
            if (err) throw err;
            console.log('Connected to MongoDB!')
        }
    )
}
export default connect;

当我试图在 dev.js 文件中记录 process.env.DEV_DB 时,它也记录了 undefined

注意:dotenv在应用程序的顶部导入,.env在根文件中。

您是否也在 dev.js 文件的顶部导入了 dotenv?当我在本地尝试时,这为我解决了。