Необработанное исключение в express

#javascript #node.js #reactjs

#javascript #node.js #reactjs

Вопрос:

я получаю следующую проблему с ошибкой throw er; // Unhandled 'error' event Вот мой Controler.js

 const router = require('express').Router();
router.post('/api/sendMail', async (req,res) => {
    console.log("yes")
});

module.exports = router;
  

Вот мой index.js

 const cont = require('./controllers/Controler');

app.use(cont);

 throw er; // Unhandled 'error' event
  ^

Error: listen EADDRINUSE :::5000
    at Server.setupListenHandle [as _listen2] (net.js:1286:14)
    at listenInCluster (net.js:1334:12)
    at Server.listen (net.js:1421:7)
    at Function.listen (/Users/user/folder/node_modules/express/lib/application.js:618:24)
    at Object.<anonymous> (/Users/user/folder/server.js:24:5)
    at Module._compile (internal/modules/cjs/loader.js:688:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
Emitted 'error' event at:
    at emitErrorNT (net.js:1313:8)
    at process._tickCallback (internal/process/next_tick.js:63:19)
    at Function.Module.runMain (internal/modules/cjs/loader.js:744:11)
    at startup (internal/bootstrap/node.js:285:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:739:3)
  

Я не уверен, чего мне не хватает, но я получаю необработанную ошибку.

Комментарии:

1. Какой-то процесс использует порт 5000

2. Попробуйте изменить порт, к которому вы привязываетесь

Ответ №1:

Похоже, что что-то уже использует порт 5000.

Если вы используете ОС на базе * nix, вы можете получить список процессов, подобных этому:

 netstat -tulpn | grep 5000
  

а затем завершите конкретный процесс:

 kill -9 PID
  

Ответ №2:

Используйте try / catch:

 try {
    app.use(cont);
} catch(er) {
    console.log(er);
}
  

Также обратите внимание, что порт 5000 уже используется ( EADDRINUSE ) — попробуйте изменить свой порт на что-нибудь другое.

Комментарии:

1. Какой смысл перехватывать ошибку, если вы снова создаете ее в блоке catch?

Ответ №3:

Попробуйте запустить свое приложение, используя другой порт, или завершите процесс на текущем порту 5000

Для завершения задачи в Windows

 //get process running in port 5000

netstat -ano | findstr :5000 

//enter your pid and force kill
//replace <pID> with your process id

taskkill /PID <pID> /F