Node.js 在Express中忽略了下一个错误处理程序
我是新来表达的,我正在学习错误处理程序。 我的代码很简单,它抛出一个错误,将其写入日志并响应Node.js 在Express中忽略了下一个错误处理程序,node.js,express,error-handling,fs,Node.js,Express,Error Handling,Fs,我是新来表达的,我正在学习错误处理程序。 我的代码很简单,它抛出一个错误,将其写入日志并响应 const express = require('express'); const fs = require('fs'); const app = express();
const express = require('express');
const fs = require('fs');
const app = express();
app.get('/', (req, resp, next) => {
throw new Error('errors !!!');
});
function writeLog(err, req, resp, next) {
fs.writeFile(
'./app.log',
`${req.method} ${req.url} Error: ${err.message}`,
(err) => {
console.log('the callback');
next(err);
}
);
}
function errResp(err, req, resp, next) {
console.log('next err handler');
resp.json(
{
path: req.path,
message: err.message,
}
);
}
app.use(writeLog);
app.use(errResp);
app.listen(8080, () => {
console.log('listen on 8080');
});
结果是:
它将错误写入app.log
并调用next
函数,但不知怎的,errResp
处理程序被忽略了,这让我很困惑。应调用errResp
如果我删除writeLog
中间件,则可以调用errResp
,服务器可以使用200状态代码正确响应json结构
节点v12.4.0
Express v4.17.1
有人能帮助这个初学者吗