当前将我的项目转换为使用打字稿。我以前在节点中启动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: Error
或error: 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尝试此