Как обрабатывать ошибки с помощью Express .listen () (в Typescript)? - PullRequest
1 голос
/ 24 мая 2019

В настоящее время конвертирую мой проект для использования Typescript. Мой ранее работающий код для запуска Express в Node выглядит так:

server.listen(port, (error) => {
  if (error) throw error;
  console.info(`Ready on port ${port}`);
});

Теперь я получаю ошибку Typescript:

Argument of type '(error: any) => void' is not assignable to parameter of type '() => void'.

Я пытался присвоить тип аргументу, например error: Error или error: any, но это не решает проблему. Что я тут не так делаю?

Кроме того, так как я новичок в Typescript, хотя я нашел много ресурсов для изучения Typescript в целом, есть ли где-то, где я должен искать, как обращаться с Typescript в сценариях, более специфичных для пакетов npm?

1 Ответ

2 голосов
/ 24 мая 2019

Нет error ¹.

 server.listen(port, () => {
   console.info(`Ready on port ${port}`);
 });

Для прослушивания ошибок используйте server.listen(port).on("error", /*...*/) ².

¹: документы довольно вложенные:

Экспресс-документы 1011 * говорят, что

Этот метод идентичен http.Server.listen () Node.

Теперь эти документы говорят, что htt.Server.listen равно Net.server.listen.

И , что затем говорит:

Эта функция асинхронная. Когда сервер начинает слушать, событие «прослушивания» будет отправлено. Последний параметр обратного вызова будет добавлен в качестве прослушивателя для события прослушивания.

Теперь «прослушивающее» событие , похоже, не вызывает никакой ошибки.

²: Это рекомендуемый способ, который я нашел в Express Issueracker .

Обратите внимание, что в большинстве случаев вы не хотите обрабатывать ошибку, если сервер падает, очень вероятно, что лучшим вариантом будет просто перезапустить весь процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...