我试图在官方文档中找到但没有找到明确的事件列表。
是否有像'route-matched'
这样的事情,所以我可以app.on('route-matched', () => {})
?
编辑:在官方页面中,有mount
事件,在父应用上安装支持应用时调用。除此之外,没有链接没有信息在哪里可以找到支持的事件。
答案 0 :(得分:1)
看过文档后,我找到了
,没有别的。
查看源代码,除了一次调用以发出所述mount事件之外,我找不到任何其他内容。代码库并非那么大,虽然也许某些依赖项本身就是事件发射器,它们会执行你可能会听到的事情,尽管我认为它们中的大多数都不会被暴露。
所以我想我所说的是你在文档中找到了唯一的事件列表,因为只有一个事件是从Express发出的。
那就是说,我很好奇你为什么要听一条匹配的路线?附加到该路由的中间件会在匹配时触发,因此这就像您想要的那样是一个听众。
答案 1 :(得分:1)
也许您参考Nodejs的http.ServerResponse事件?
如Express js docs中所述:
res对象是Node自己的响应对象的增强版本,支持所有内置字段和方法。
然后在Node js docs:
类:http.ServerResponse:
- 活动:'关闭'
- 活动:'完成'
答案 2 :(得分:1)
我使用以下命令创建了一个准系统应用程序:
npm install -g express-generator
express myExpressApp --view pug
这会生成(除其他外)一个名为 bin/www
的文件,其中包含以下几行:
server.listen(port)
server.on('error', onError);
server.on('listening', onListening);
...
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('listening on ' + bind);
}
使用 VS Code,我在 onListening
函数的开头放置了一个断点。当我开始调试应用程序时,我能够查看触发 listening
事件的代码。我找到了一个名为 <node_internals> net.js
的脚本,其中包含对 emit
以下事件的调用:
'连接'
'连接'
'关闭'
'错误'
'倾听'
'查找'
'准备好'
'超时'
可以在 Node.js Documentation for Net 中找到这些(和其他)事件的详细信息。
mount
事件在文件 node_modules/express/lib/application.js
中生成,这或许可以解释为什么它是 ExpressJS 唯一明确记录的事件,尽管可以训练您的 express
应用程序对象处理其他应用程序对象.
虽然没有比 route-matched
事件更像的东西...但我想现在您已经找到了解决方法:)
答案 3 :(得分:-1)
也许是https://nodejs.org/api/http.html的超集
但是,这样做更安全
const server = app.listen(process.env.PORT) // server is an instance of http.Server
server.on('close', callback)