Tengo una aplicación Next.js. Tengo un error con Mongodb. No pude resolver este problema por un tiempo. Es por eso que quería preguntarles a ustedes. Espero que podamos solucionarlo. Es muy importante para mi. En primer lugar, le daré mis códigos server.js, luego le daré el mensaje de error de la consola.
Códigos de archivo Server.js:
const express = require('express') const next = require('next') const mongoose = require('mongoose') require('dotenv/config') const dev = process.env.NODE_ENV !== 'production' const app = next({ dev }) const handle = app.getRequestHandler() const port = process.env.SERVER_PORT || 3000 mongoose.connect(process.env.DATABASE,{ useNewUrlParser: true, useUnifiedTopology: true, }) .then(() => { console.log('DB connected!') const port = process.env.PORT || 3000 app.prepare().then(()=>{ const server = express() //ROUTES server.use(express.json()) server.get('*', (req, res) => handle(req, res)) server.listen(port, (err) => { if(err) throw err console.log(`Server listen on http://127.0.0.1:${port}`) }) }) }) .catch((err) => { console.log('DB ERROR:', err) })Mensaje de error en la consola:
DB ERROR: MongooseError: The `uri` parameter to `openUri()` must be a string, got "undefined". Make sure the first parameter to `mongoose.connect()` or `mongoose.createConnection()` is a string. at NativeConnection.Connection.openUri (/home/ubuntu/nodeApps/mywebsite-next/node_modules/mongoose/lib/connection.js:684:11) at /home/ubuntu/nodeApps/mywebsite-next/node_modules/mongoose/lib/index.js:332:10 at /home/ubuntu/nodeApps/mywebsite-next/node_modules/mongoose/lib/helpers/promiseOrCallback.js:32:5 at new Promise (<anonymous>) at promiseOrCallback (/home/ubuntu/nodeApps/mywebsite-next/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:10) at Mongoose._promiseOrCallback (/home/ubuntu/nodeApps/mywebsite-next/node_modules/mongoose/lib/index.js:1158:10) at Mongoose.connect (/home/ubuntu/nodeApps/mywebsite-next/node_modules/mongoose/lib/index.js:331:20) at Object.<anonymous> (/home/ubuntu/nodeApps/mywebsite-next/server.js:11:10) at Module._compile (node:internal/modules/cjs/loader:1101:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)Tengo el enlace de Mongodb en mi archivo env. ¿Quizás el error se debe a esta situación?
DATABASE=mongodb+srv://myusername:mypassword@cluster0.u4slu.mongodb.net/mydbusername?retryWrites=true&w=majorityDebe poner sus credenciales de inicio de sesión en su código de URL de mongodb de esta manera:
DATABASE=mongodb+srv://admin:admin@cluster0.u4slu.mongodb.net/<dbusername>?retryWrites=true&w=majoritySi ya intentaste dar la ruta a dotenv:
require('dotenv').config({ path: 'ENV_FILENAME' });