He estado recibiendo un error cada vez que "publico" algo usando express y node. Puedo cargar el sitio web, pero se bloquea una vez que envío los datos de mi formulario
Este ha sido el resultado:
/Users/anishladdha/url_shortener/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:185 callback(new MongooseError(message)); ^ MongooseError: Operation `urls.findOne()` buffering timed out after 10000ms at Timeout.<anonymous>
cuando ejecuto este código:
const express = require('express'); const bodyParser = require('body-parser'); const request = require('request'); const https = require('https') const { json } = require('body-parser'); const mongoose = require('mongoose'); const shortID = require('shortid'); const URL = require("./models/url.js") const app = express(); app.set('view engine', 'ejs'); var mongoDB = 'mongodb://localhost/url_short'; mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true}).then(console.log("connected?")); var db = mongoose.connection; db.on('error', console.error.bind(console, 'MongoDB connection error:')); db.once("open", function() { console.log("MongoDB database connection established successfully"); }); app.use(bodyParser.urlencoded({extended: true})); //app.get('/') works app.post('/', async function(req, res) { let sid = shortID.generate await URL.create({ longUrl: req.body.user_url, shortUrl: sid, }); res.render('index', {sid: sid}); }); app.listen(3000, function() { console.log('listening on port:3000'); });
¡Cualquier ayuda sería apreciada!
OK, entonces esta fue posiblemente la cosa más estúpida que he hecho en mis años de codificación.
No me di cuenta de que tenías que instalar mongodb para que funcionara: |
así que sí, probablemente haga eso
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/
Según mi experiencia, casi siempre el motivo son dos módulos mongoose
instalados y utilizados en un proyecto. Debe asegurarse de que solo haya una mongoose
en sus node_modules
.
Escriba npm ls mongoose
y encuentre todos los paquetes mongoose
que no están deduplicados .
Ejemplo:
$ npm ls mongoose my-project@1.0.0 /home/jon/code/my-project ├─┬ package-one@2.0.0 │ └── mongoose@5.11.18 ├─┬ package-two@4.0.0 │ └── mongoose@5.12.2 deduped └── mongoose@5.12.2
Como puede ver, tengo la dependencia del package-one
que tiene su propia copia (no deduplicada) del módulo mongoose
.
Hay varias formas de solucionarlo.
mongoose
.mongoose
requerida de sus dependencias (paquete uno y paquete dos).Un buen comienzo sería comprender cómo funciona el control de versiones semántico en npm .