gpt4 book ai didi

node.js - TypeError : res. 状态不是错误处理中间件中的函数

转载 作者:行者123 更新时间:2023-12-05 02:46:08 24 4
gpt4 key购买 nike

我只是想添加一个最小的中间件来处理我的 express typescript 项目中的错误。
我使用 celebration 中的 errors 方法让它处理 celebration/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

我应该怎么做才能像我想要的那样使用 Request?

最佳答案

如果要写error handling middleware ,您必须提供一个带有四个 声明参数的函数,而不仅仅是三个。所以在你的情况下:

app.use((err: any, req: Request, res: Response, next: NextFunction) => res.status(300).json(err.message));

即使您不在代码中使用 next 函数,如果它采用四个形式参数,Express 也只能告诉它是一个错误处理程序中间件函数。从上面链接的文档中:

Error-handling middleware always takes four arguments. You must provide four arguments to identify it as an error-handling middleware function. Even if you don’t need to use the next object, you must specify it to maintain the signature. Otherwise, the next object will be interpreted as regular middleware and will fail to handle errors.

express 一定要看length property的功能,以便知道它是否是一个错误处理中间件。

关于node.js - TypeError : res. 状态不是错误处理中间件中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65627437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com