Estoy tratando de crear una aplicación fullstack leyendo el siguiente tutorial:
Seguí todos los pasos y luego intenté correr:
node server.js
Pero recibí el siguiente error:
Error de conexión de MongoDB: MongoTimeoutError: La selección del servidor expiró después de 30000 ms en Timeout._onTimeout (C: \ RND \ fullstack_app \ backend \ node_modules \ mongodb \ lib \ core \ sdam \ server_selection.js: 308: 9) en listOnTimeout (interno / timers.js: 531: 17) en processTimers (internal / timers.js: 475: 7) {nombre: 'MongoTimeoutError', razón: Error: conecte ETIMEDOUT 99.80.11.208:27017 en TCPConnectWrap.afterConnect [como oncomplete] (net. js: 1128: 14) {nombre: 'MongoNetworkError', [Símbolo (mongoErrorContextSymbol)]: {}}, [Símbolo (mongoErrorContextSymbol)]: {}} (nodo: 42892) UnhandledPromiseRejectionWarning: MongoTimeoutError: La selección del servidor se agotó después de 30000 ms en Timeout._onTimeout (C: \ RND \ fullstack_app \ backend \ node_modules \ mongodb \ lib \ core \ sdam \ server_selection.js: 308:9) en listOnTimeout (internal / timers.js: 531: 17) en processTimers (internal / timers.js: 475: 7)
Mi código en server.js es el siguiente:
const mongoose = require('mongoose');
const router = express.Router();
// this is our MongoDB database
const dbRoute =
'mongodb+srv://user:<password>@cluster0-3zrv8.mongodb.net/test?retryWrites=true&w=majority';
mongoose.Promise = global.Promise;
// connects our back end code with the database
mongoose.connect(dbRoute,
{ useNewUrlParser: true,
useUnifiedTopology: true
});
let db = mongoose.connection;
db.once('open', () => console.log('connected to the database'));
¿Alguna sugerencia?
fuente
user:password
a tuusername and password
cadena de conexión?Respuestas:
simplemente vaya al panel de administración de mongodb atlas. Vaya a la pestaña de seguridad> Acceso a la red> Luego agregue su IP a la lista blanca agregándola
Vea esta imagen para ubicar el menú en particular
Nota: Verifique su IP en Google y luego agréguela
fuente
Asegúrese de eliminar "<" y ">" cuando reemplace los campos de usuario y contraseña. Esto funciono para mi
fuente
A veces, este error se produce debido a que la dirección IP tiene acceso a nuestra base de datos.
Eso sí, su aplicación puede estar funcionando bien y luego aparece ese error. Cada vez que esto sucede, la mayoría de las veces sus direcciones IP han cambiado, lo que no está en la lista blanca de direcciones permitidas.
Todo lo que tiene que hacer es actualizar la lista blanca con sus direcciones IP actuales
fuente
Incluya en la lista blanca su dirección IP de conexión. Atlas solo permite conexiones de clientes al clúster desde las entradas en la lista blanca del proyecto. La lista blanca del proyecto es distinta de la lista blanca de la API, que restringe el acceso de la API a direcciones IP o CIDR específicas.
NOTA
Puede omitir este paso si Atlas indica en el paso Configuración de seguridad de conexión que ya ha configurado una entrada de la lista blanca en su clúster. Para administrar la lista blanca de IP, consulte Agregar entradas a la lista blanca.
Si la lista blanca está vacía, Atlas le solicita que agregue una dirección IP a la lista blanca del proyecto. Tu también puedes:
Haga clic en Agregar su dirección IP actual para incluir en la lista blanca su dirección IP actual.
Haga clic en Agregar una dirección IP diferente para agregar una sola dirección IP o un rango de direcciones con notación CIDR.
Para los clústeres de Atlas implementados en Amazon Web Services (AWS) y que utilizan VPC Peering, puede agregar un grupo de seguridad asociado con la VPC de igual.
Puede proporcionar una descripción opcional para la dirección IP o el rango CIDR recién agregados. Haga clic en Agregar dirección IP para agregar la dirección a la lista blanca.
fuente
¡Puede eliminar la bandera {useUnifiedTopology: true} y reinstalar la dependencia de la mangosta! Funcionó para mí.
fuente
Tengo el mismo error. Estos son los pasos que seguí para resolverlo
Después de estos pasos funcionó como siempre. Espero que esto los ayude.
fuente
Puedes probar:
fuente
node 3.00 or later
y copió `` mongodb + srv: // usuario: <contraseña> @ cluster0-3zrv8.mongodb.net / test? RetryWrites = verdadero & w = mayoría ''? Allí tiene tres opciones para elegir, elija el nodo mediotuve este problema, para mí la solución fue verificar si mi ip se configuró correctamente y antes de confirmar en esta pantalla
ingrese la descripción de la imagen aquí
fuente
Por favor Compruebe su contraseña, la configuración del nombre de usuario o IP . La mayoría de las veces "La selección del servidor agotó el tiempo de espera después de 30000 ms en Timeout._onTimeout" siempre que las cosas anteriores no coinciden con la configuración de su servidor.
fuente
Soy capaz de resolver el problema. Todo estaba bien, pero el firewall estaba bloqueando el acceso al puerto 27017. La conectividad se puede probar en http://portquiz.net:27017/ o usando telnet hasta el punto final que se puede recuperar de clústeres-> Métricas.
Gracias a todos por las sugerencias.
fuente
Intente crear un nuevo usuario en el acceso a la base de datos con el método de autenticación predeterminado que es "SCRAM". Luego crea un nuevo Clúster para eso. ¡Funcionó para mí! Mi archivo server.js
fuente
¿Cuál es tu versión de mangosta? porque hay un problema con cierta versión de mangosta. Visite este enlace para obtener más detalles " https://github.com/Automattic/mongoose/issues/8180 ". De todos modos, me enfrentaba al mismo problema, pero después de usar una versión anterior (5.5.2), funcionó para mí. Por favor, inténtalo y avísame qué pasó.
fuente
Básicamente podría deberse a una actualización de npm. Acabo de actualizar a npm v 6.13.7. y comencé a tener ese error.
Siguiendo las instrucciones de @Matheus, comenté la línea "{useUnifiedTopology: true}" y pude superarla.
Actualicé mangosta y todo funciona bien.
fuente
¿Está utilizando algún antivirus, firewall, VPN o en la red restringida (por ejemplo, conexión de trabajo / comercial Wi-Fi / LAN)? Luego intente apagarlo / volver a conectarlo a una red diferente. El administrador de una red que está utilizando puede bloquear algunas IP / conexiones o simplemente el antivirus puede tener políticas de firewall. Aunque si tienes
0.0.0.0
en tuIP Address
en el Atlas MongoDB.fuente
Tuve el mismo problema. Podía conectarme desde MongoDB Compass o mi aplicación Node usando las cadenas de conexión que Atlas me dio. Lo resolví agregando mi dirección IP a la lista blanca en Atlas.
fuente
Para cualquiera que todavía esté luchando por este problema. Resolví este problema estableciendo todos los parámetros como nombre de usuario, contraseña y dbName en las propias opciones de mangosta.
Anteriormente el código era así. (Cuando recibía el error).
Tenga en cuenta que url en mongo connect.
mongodb://${dbAddress}:${dbPort}/${dbName}
.Nuevo código sin error.
Tenga en cuenta las opciones y la url.
Este es mi entorno local. No producción env.
Espero que sea útil.
fuente
intente especificar el controlador de nodo, versión 2,2,12 en el clúster -> conectar -> conecte su aplicación. la nueva cadena debe estar con mongodb: //. usa esta cadena para conectarte. no olvides ingresar una contraseña
fuente