Tengo un archivo de configuración llamado dev.js que contiene un objeto que tiene una clave llamada dbURL que contiene la URL de la base de datos para MongoDB. Se parece a esto exactamente.
export const config = { dbURL: 'mongodb+srv://...' } Y tengo otro archivo llamado db.js donde importo el archivo dev.js anterior y uso la clave dbURL para conectarme a la base de datos.
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; El problema es si traté de cambiar el valor de dbURL en el archivo dev.js para que sea process.env.DEV_DB , por ejemplo.
export const config = { dbURL: process.env.DEV_DB } El archivo .env se ve así
DEV_DB = "mongodb+srv://...." En realidad, devuelve undefined , aunque traté de console.log(process.env.DEV_DB) en el archivo db.js e imprimió la URL de la base de datos normalmente.
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; Cuando traté de registrar el process.env.DEV_DB en el archivo dev.js , también se registró undefined .
Nota: El dotenv se importa en la parte superior de la aplicación y el .env está en el archivo raíz.
¿También ha importado dotenv en la parte superior de su archivo dev.js? Eso lo resolvió para mí cuando lo probé localmente.