express typescript err throw 'any' 警告
Posted
技术标签:
【中文标题】express typescript err throw \'any\' 警告【英文标题】:express typescript err throw 'any' warningexpress typescript err throw 'any' 警告 【发布时间】:2021-03-02 15:04:37 【问题描述】:我有一小段代码
import express from 'express';
const app = express();
const port = 3000;
app.get('/', (req, res) =>
res.send('The sedulous hyena ate the antelope!');
);
app.listen(port, err => //show error here
if (err)
return console.error(err);
return console.log(`server is listening on $port`);
);
不知道为什么会弹出这条消息
No overload matches this call.
The last overload gave the following error.
Argument of type '(err: any) => void' is not assignable to parameter of type '() => void'.ts(2769)
我没有为req和res声明类型,但是为什么typescript只为err显示错误?
【问题讨论】:
看起来类型定义中的listen
从不采用错误参数github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/…
查看节点源代码 - 看起来确实回调从未被错误调用,它只是 this.once('listening', cb);
- 所以这里的类型定义实际上是正确的。
将通过error
事件在从app.listen()
返回的服务器对象上发送错误。您可以为错误事件添加单独的侦听器。
【参考方案1】:
没有错误参数。
按住 CTRL 然后点击listen
它将打开index.d.ts
,您将看到定义
listen(port: number, hostname: string, backlog: number, callback?: () => void): http.Server;
listen(port: number, hostname: string, callback?: () => void): http.Server;
listen(port: number, callback?: () => void): http.Server;
listen(callback?: () => void): http.Server;
listen(path: string, callback?: () => void): http.Server;
listen(handle: any, listeningListener?: () => void): http.Server;
如您所见,callback
没有参数
【讨论】:
以上是关于express typescript err throw 'any' 警告的主要内容,如果未能解决你的问题,请参考以下文章
Firebase - Node.js - Express - 错误 [ERR_HTTP_HEADERS_SENT]
Express.js 中的新 Mongoose Schema `ERR_HTTP_HEADERS_SENT` 错误
Express: [ERR_HTTP_HEADERS_SENT]: 发送到客户端后无法设置标头
express 3.5 Err: request aborted