node.js - react - ExpressJS-throw er Evento de error no controlado
events.js:183 throw er;// unhandled ''error'' event react (20)
Cierre cualquier otro servidor de nodo que se esté ejecutando, incluso si se encuentran en otras ventanas de terminal o se ejecutan en puertos diferentes. Eso debería arreglar el problema.
Creé la aplicación expressjs usando los siguientes comandos:
express -e folderName
npm install ejs --save
npm install
Cuando ejecuto la aplicación con: node app.js
, tengo los siguientes errores:
events.js:72
throw er; // Unhandled ''error'' event
^
Error: listen EADDRINUSE
at errnoException (net.js:884:11)
at Server._listen2 (net.js:1022:14)
at listen (net.js:1044:10)
at Server.listen (net.js:1110:5)
at Object.<anonymous> (folderName/app.js:33:24)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
¿Como arreglarlo?
Después de matar el mismo proceso varias veces y no poder encontrar qué más se estaba ejecutando en el puerto 8000, me di cuenta de que estaba tratando de ejecutar en el puerto 8000 dos veces:
Antes de:
MongoClient.connect(db.url, (err, database) => {
if (err) return console.log(err);
require(''./app/routes'')(app, database);
app.listen(port, () => {
console.log(''We are live on '' + port);
});
});
require(''./app/routes'')(app, {});
app.listen(port, () => {
console.log("We are live on " + port);
});
Después:
MongoClient.connect(db.url, (err, database) => {
if (err) return console.log(err);
require(''./app/routes'')(app, database);
app.listen(port, () => {
console.log(''We are live on '' + port);
});
});
require(''./app/routes'')(app, {});
Detenga el servicio que está usando ese puerto.
sudo service NAMEOFSERVICE stop
El nodo de puerto está tratando de usar puede ser utilizado por otro programa. En mi caso, fue ntop , que había instalado recientemente. Tuve que abrir http://localhost:3000/ en un navegador para realizarlo. Otra forma de encontrar el proceso se da here .
En mi caso, el problema se debió a que olvidó llamar a next()
en una llamada a un método de "uso" expressjs.
Si el middleware actual no finaliza el ciclo solicitud-respuesta, debe llamar a next () para pasar el control al siguiente middleware, de lo contrario, la solicitud quedará pendiente.
En mi caso, tuve que ejecutar la vagrant reload
también. Incluso sin procesos de nodo ejecutando mi aplicación exprés en mi máquina virtual, todavía estaba recibiendo este error hasta volver a cargar el cuadro vagabundo.
Esto funcionó para mí.
http://www.codingdefined.com/2015/09/how-to-solve-nodejs-error-listen.html
Simplemente cambie el número de puerto desde las propiedades del Proyecto.
Esto se debe a que el puerto que está utilizando para ejecutar el script ya está en uso. Tienes que detener a todos los otros nodos que están usando esa publicación. para eso puedes verificar todos los nodos
ps -e
para matar a todos los procesos de nodo
sudo killall -9 node
Había ejecutado otro servidor utilizando el mismo puerto como 8080.
Tal vez había ejecutado la node app
en otro shell. Ciérrelo y vuelva a ejecutar.
Puede verificar PORT no. está disponible o no está usando
netstat -tulnp | grep <port no>
Para arreglar esto, finalice o cierre el servidor que está ejecutando. Si está utilizando Eclipse IDE, siga esto,
Ejecutar> Depurar
Haga clic con el botón derecho en el proceso en ejecución y haga clic en Terminar .
Recibimos un error similar cuando a veces ejecutamos nuestra aplicación express. Tenemos que seguir lo mismo en ese caso. Necesitamos comprobar si se está ejecutando en cualquier terminal. Si desea buscar y eliminar el proceso, siga estos pasos:
- ps aux | nodo grep
- Encuentre el ID del proceso (segundo desde la izquierda):
- kill -9 PRCOCESS_ID
O
Use un solo comando para cerrar todos los procesos de nodo en ejecución.
ps aux | awk ''/node/{print $2}'' | xargs kill -9
Si desea utilizar el mismo número de puerto, escriba kill %
en el terminal, lo que elimina el proceso de fondo actual y libera el puerto para su uso posterior.
Si está en Linux, este problema también puede ocurrir si Nodejs no se está ejecutando como raíz.
Cambiar de esto:
nodejs /path/to/script.js
A esto:
sudo nodejs /path/to/script.js
Simplemente me pasó a mí y ninguna de las otras sugerencias aquí lo solucionó. Afortunadamente, recordé que el script estaba funcionando el otro día cuando se ejecutaba como root. ¡Espero que esto ayude a alguien!
Descargo de responsabilidad: probablemente esta no sea la mejor solución para un entorno de producción. Iniciar su servicio como root puede introducir algunos agujeros de seguridad en su servidor / aplicación. En mi caso, esta era una solución para un servicio local, pero animo a otros a pasar más tiempo tratando de aislar la causa.
Si ha intentado eliminar todas las instancias de nodos y otros servicios que escuchan en 3000 (el valor predeterminado utilizado por la configuración de esqueleto rápido) en vano, debe asegurarse de que su entorno no define ''puerto'' como algo inesperado. De lo contrario, es probable que obtenga el mismo error. En el archivo app.js de express skeleton, verás la línea 15:
app.set(''port'', process.env.PORT || 3000);
Simplemente cambie su puerto, es posible que su puerto actual esté en uso por iis u otro servidor.
Solucioné el error cambiando el puerto que era
app.set (''port'', process.env.PORT || 3000);
y cambiado a:
app.set (''port'', process.env.PORT || 8080);
También puede cambiar el puerto de Gruntfile.js y ejecutar nuevamente.
Tuve el mismo problema y descubrí que todavía se estaba ejecutando un proceso nodejs que había cancelado previamente con CTRL + C. El problema en Windows 10 es que Ctrl + C no mata con gracia nodejs. Abrí el administrador de tareas y eliminé el proceso manualmente. Las soluciones proporcionadas en GitHub no funcionaron para mí.
Una instancia probablemente aún se está ejecutando. Esto lo arreglará.
killall node
esto significa que su archivo se está ejecutando ahora. solo ingrese el código debajo e intente de nuevo:
sudo pkill node