如何解决TypeError: res.status 不是错误处理中间件中的函数
我只想添加一个最小的中间件来处理我的 express typescript 项目中的错误。
我使用来自庆祝的错误方法让它处理庆祝/joi 错误,并想添加另一个来处理其他错误。
这是我的代码:
app.use(errors()); // celebration error handling
app.use((err: any,req: Request,res: Response) => res.status(300).json(err.message));
为了测试它,我尝试向不存在的端点发送 GET,但我不断收到此错误:TypeError: res.status is not a function
我应该怎么做才能像我想要的那样使用请求?
解决方法
如果你想写error handling middleware,你必须提供一个带有四个声明参数的函数,而不仅仅是三个。所以在你的情况下:
app.use((err: any,req: Request,res: Response,next: NextFunction) => res.status(300).json(err.message));
即使您没有在代码中使用 next
函数,Express 也只能告诉它是一个错误处理程序中间件函数,如果它需要四个形参。来自上面链接的文档:
错误处理中间件总是采用四个参数。您必须提供四个参数以将其标识为错误处理中间件函数。即使不需要使用 next
对象,也必须指定它来维护签名。否则,下一个对象将被解释为常规中间件并且无法处理错误。
Express 必须查看函数的 length
property 才能知道它是否是错误处理中间件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。