Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

232
Views
Estoy tratando de inicializar una conexión a la base de datos pero obtengo el parámetro `uri` para `openUri()` debe ser un error de cadena

El error en la terminal

:\Users\HOPE\Tutorial_API\node_modules\mongoose\lib\connection.js:694 throw new MongooseError('El parámetro uri para openUri() debe ser ' + ^

MongooseError: el parámetro uri para openUri() debe ser una cadena, tiene "indefinido". Asegúrese de que el primer parámetro de mongoose.connect() o mongoose.createConnection() sea una cadena. en NativeConnection.Connection.openUri (C:\Users\HOPE\Tutorial_API\node_modules\mongoose\lib\connection.js:694:11) en C:\Users\HOPE\Tutorial_API\node_modules\mongoose\lib\index.js: 380:10 en C:\Users\HOPE\Tutorial_API\node_modules\mongoose\lib\helpers\promiseOrCallback.js:41:5 en new Promise () enpromiseOrCallback (C:\Users\HOPE\Tutorial_API\node_modules\mongoose\lib \helpers\promiseOrCallback.js:40:10) en Mongoose._promiseOrCallback (C:\Users\HOPE\Tutorial_API\node_modules\mongoose\lib\index.js:1225:10) en Mongoose.connect (C:\Users\HOPE \Tutorial_API\node_modules\mongoose\lib\index.js:379:20) en connectDatabase (C:\Users\HOPE\Tutorial_API\config\db.js:5:14) en Object. (C:\Users\HOPE\Tutorial_API\server.js:7:23) en Module._compile (nodo:internal/modules/cjs/loader:1105:14)

mi archivo server.js

 const express = require('express'); const health = require('./routes/healthChecker.routes'); const app = express(); require('./config/db')(); app.use(express.json()); app.use('/health', health) const port = process.env.PORT || 3000 app.listen(port, () => { console.log(`Listening on port ${port}`) });

mi archivo de base de datos

 const mongoose = require('mongoose'); const connectDatabase = () => { mongoose.connect(process.env.DB_LOCAL_URI, { useUnifiedTopology: true }) .then((con) => { console.log(`MongoDB Database connected to host ${con.connection.host}`); }); } module.exports = connectDatabase;

mi archivo predeterminado.json

 { "values": { "url": "http://localhost:3000/", "DB_LOCAL_URI": "mongodb://localhost:27017/" } }

¿Cuál podría ser el problema?

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Creo que estás mezclando dos formas de incluir variables de entorno.

La primera forma es la que ha elegido : usar un archivo default.json que usa el paquete config npm

npm i config

 const config = require('config');

luego puede usar parámetros de su archivo default.json de esta manera:

 config.get('values.DB_LOCAL_URI');

es decir.

 const mongoose = require('mongoose'); const connectDatabase = () => { mongoose.connect(config.get('values.DB_LOCAL_URI'), { useUnifiedTopology: true }) .then((con) => { console.log(`MongoDB Database connected to host ${con.connection.host}`); }); } module.exports = connectDatabase;

La segunda forma es usar un archivo .env que vive en el directorio de su archivo de nodo como se ve así:

 URL = "http://localhost:3000/" DB_LOCAL_URI = "mongodb://localhost:27017/"

Instale el paquete dotenv :

npm i dotenv

Accede a su archivo .env con una declaración requerida en su archivo server.js (que hace referencia a su archivo de base de datos):

servidor.js

 require('dotenv').config();

y luego usando este patrón:

 process.env.DB_LOCAL_URI

como esto:

 const mongoose = require('mongoose'); const connectDatabase = () => { mongoose.connect(process.env.DB_LOCAL_URI), { useUnifiedTopology: true }) .then((con) => { console.log(`MongoDB Database connected to host ${con.connection.host}`); }); } module.exports = connectDatabase;

En resumen, usó el patrón ( process.env.MYVARIABLE ) del segundo método, mientras intenta acceder al archivo de configuración/ambiente ( default.json ) usando el primer método.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!