如何在Express的“listen”回调函数中检查错误?

5

我有以下代码来检查启动Express时是否出现了错误:

express()
    .listen(port, (err: Error) => {
        if (err) {
            console.error(err);
            return;
        }
        console.log(`Express started`);
    });

然而,最近,在Typescript编译器中出现了以下错误:
TS2345:类型为'(err: Error) => void'的参数不能分配给类型为'(() => void) | undefined'的参数。
看起来listen()的回调函数不接收错误参数。如果是这种情况,那么在启动Express时应该如何检查和处理错误呢?
1个回答

22

Server对象是一个Node.js事件触发器(EventEmitter)。与所有EventEmitters一样,大多数错误都会传递到'error'事件。因此您可以像这样捕获:

Server对象是Node.js的事件触发器。与所有的事件触发器一样,大多数的错误都会被传递到 'error' 事件中。所以你可以这样捕获:

express().listen(port, () => {
   console.log('Listening on port: ', port);
}).on('error', (e) => {
   console.log('Error happened: ', e.message)
});

希望这将会有所帮助。


为什么其他地方没有提到这个呢?我想知道... 赞! - Ayyash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接