如何使用Express .Listen()(在Typescript)处理错误



当前将我的项目转换为使用打字稿。我以前在节点中启动Express的代码看起来像:

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

使用此问题,我现在得到一个打字稿错误:

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

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

另外,由于我是Typescript的新手,尽管我找到了大量用于学习打字稿的资源,但我应该想知道如何在更特定于NPM软件包的方案中处理Typescript吗?<<<</p>

没有error

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

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

¹:文档非常嵌套:

Express Docs说,

此方法与Node的http.server.listen((。

相同

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

然后说:

此函数是异步的。当服务器开始侦听时,将发出"听力"事件。最后一个参数回调将作为"听力"事件的侦听器添加。

现在"听"事件似乎没有引起任何错误。

²:那是我在Express Insuetracker中找到的推荐方法。

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

我今天也遇到了这一点。这是类型定义的(打破(更改:

https://github.com/definitelytyped/definitelytyped/pull/47063

PR的作者建议处理听力错误的正确方法是注册侦听器(如上面的Jonas链接(:

https://nodejs.org/api/net.html#net_server_listen

听起来像是谎言的类型定义,并且该参数实际上并不存在,因此从应用程序中删除其使用应该是一个no-op。那就是我在做的。(此外,我还可以遇到诸如Eaddrinuse崩溃的错误,所以我没有添加任何新错误处理(

const express = require('express')
const app = express();
const port = 3000
app.listen(port, () => {
   console.info(`Your app is listening a http://localhost: ${port}`);
 });

npm安装express尝试此

最新更新