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

有人能帮助这个初学者吗