我已经阅读了express docs about error handling,并试图添加一个自定义的错误处理程序,但它从来没有被称为. app.ts:
const express = require('express')
const bodyParser = require('body-parser');
const methodOverride = require('method-override')
const app = express ();
const port = process.env.PORT || 3000;
app.use(express.json());
app.use(cors());
// Configuring body parser middleware
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(methodOverride());
app.use((err, req, res, next) => {
console.error(err.stack)
res.status(500).send('my handler')
})
....
....
字符串
下面是一个带有故意错误的函数:
export function getRidesForDate(request: { body: { data: number; }; }, response: { json: (arg0: Ride[] ) => void; }, next: (arg0: { code: any; }) => void) {
const date = request.body.data;
const sql = `incorrect query`;
dbconnection.query(sql,function (error: { code: any; }, results: Ride[])
{
if (error != null) {
next(error);
}
response.json(results);
});
}
型
错误被捕获,服务器没有崩溃,这很好。但是覆盖的错误处理程序app.use((err, req, res, next)
没有被调用-完整的错误堆栈输出到服务器控制台,我想返回一些有意义的东西给客户端。
1条答案
按热度按时间p1iqtdky1#
所以我并不真正理解“中间件”这个术语!我链接到的文档在示例中不包括
app.post
等。我找到了一个很好的解释here
字符串
我仍然不确定如何在客户端获取
send(err.message)
的内容,res
不包括它,所以我改变了statusMessage