Cada vez que intento ejecutar el nodo index.js, obtengo "Error [MongooseError]: El parámetro uri para openUri() debe ser una cadena, obtuvo "indefinido". Asegúrese de que el primer parámetro sea mongoose.connect() o mongoose.createConnection() es una cadena"
Además, index.js y .env están en el mismo directorio.
índice.js:
const express = require('express'); require('dotenv').config(); const bodyParser = require('body-parser'); const mongoose = require('mongoose'); const routes = require('./routes/api'); const path = require('path'); const app = express(); const port = process.env.PORT || 3000; mongoose.connect(process.env.DB, { useNewUrlParser: true }) .then(() => console.log(`Database connected successfully`)) .catch(err => console.log(err)); mongoose.Promise = global.Promise; app.use((req, res, next) => { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); app.use(bodyParser.json()); app.use('/api', routes); app.use((err, req, res, next) => { console.log(err); next(); }); app.listen(port, () => { console.log(`Server running on port ${port}`) });.env:
NODE_ENV = development PORT = 3000 MONGO_URI = mongodb+srv://"User":1@cluster0.da5tj.mongodb.net/myFirstDatabase?retryWrites=true&w=majorityEstaba teniendo el mismo problema y esto funcionó para mí. Requerir en dotenv.
require('dotenv').config()... y configurando el archivo .env con la variable MONGO_URI = mi conexión a la base de datos
... y finalmente asegurándose de pasar lo siguiente a mongoose.connect:
process.env.MONGO_URIEspero que ayude. Soy novato, así que no cuentes conmigo para responder muchas preguntas.
Solo tiene un pequeño error aquí, pero aquí está la solución, su .env almacena su cadena de conexión como MONGO_URI y su código principal está llamando a process.env.DB , lo que causa el error de mangosta que está recibiendo, ejecuté su código con mi db y funciona bien, su código debería ser como el siguiente sin cambiar su archivo .env
const express = require('express'); require('dotenv').config(); const bodyParser = require('body-parser'); const mongoose = require('mongoose'); const routes = require('./routes/api'); const path = require('path'); const app = express(); const port = process.env.PORT || 3000; mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true }) .then(() => console.log(`Database connected successfully`)) .catch(err => console.log(err)); mongoose.Promise = global.Promise; app.use((req, res, next) => { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); app.use(bodyParser.json()); app.use('/api', routes); app.use((err, req, res, next) => { console.log(err); next(); }); app.listen(port, () => { console.log(`Server running on port ${port}`) });