如何使用 Express .listen()(在 Typescript 中)处理错误?

Coo*_*oop 15 javascript node.js express typescript

目前正在将我的项目转换为使用 Typescript。我以前在 Node 中启动 Express 的工作代码如下所示:

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

有了这个,我现在得到一个打字稿错误:

Argument of type '(error: any) => void' is not assignable to parameter of type '() => void'.
Run Code Online (Sandbox Code Playgroud)

我试过为参数分配一个类型,例如error: Errororerror: any但这并不能解决问题。我在这里做错了什么?

另外,由于我是 Typescript 的新手,虽然我已经找到了大量通常用于学习 Typescript 的资源,但是否有任何地方我应该知道如何在更特定于 npm 包的场景中处理 Typescript?

Jon*_*lms 17

没有error¹。

 server.listen(port, () => {
   console.info(`Ready on port ${port}`);
 });
Run Code Online (Sandbox Code Playgroud)

要侦听错误,请使用server.listen(port).on("error", /*...*/)²。

¹:文档非常嵌套:

快递文档说,这

此方法与 Node 的 http.Server.listen() 相同。

现在这些文档说,这htt.Server.listen等于Net.server.listen.

接着说:

这个函数是异步的。当服务器开始侦听时,将发出 'listening' 事件。最后一个参数回调将被添加为 'listening' 事件的监听器。

现在,“listening”事件似乎没有引发任何错误。

²:这是我在Express issuetracker 中找到的推荐方式。

请注意,在大多数情况下,您不想处理错误,如果服务器崩溃,很可能最好的选择是重新启动整个过程。