Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express4错误中间件序列_Javascript_Node.js_Express_Express 4 - Fatal编程技术网

Javascript Express4错误中间件序列

Javascript Express4错误中间件序列,javascript,node.js,express,express-4,Javascript,Node.js,Express,Express 4,accros执行了一系列代码,我发现这是不寻常的,代码如下: server.js 动作\u单个\u PVC.js 如果您以前从未见过这种结构,这里是asyncMW: const asyncMiddleware = fn => (req, res, next) => { Promise.resolve(fn(req, res, next)) .catch(next); }; module.exports = asyncMiddleware; 我不明白

accros执行了一系列代码,我发现这是不寻常的,代码如下:

server.js

动作\u单个\u PVC.js

如果您以前从未见过这种结构,这里是asyncMW:

const asyncMiddleware = fn =>
  (req, res, next) => {
    Promise.resolve(fn(req, res, next))
      .catch(next);
  };

  module.exports = asyncMiddleware;
我不明白的是,当抛出一个错误时,我在这里用抛出新错误复制了它;执行server.js文件中的错误处理中间件。我希望Actions_single_PVC.js的错误处理中间件能够得到执行

问题:
为什么执行server.js中的错误middlware而不是Actions\u single\u PVC.js中的错误middlware?

这是因为以下代码仅将中间件应用于具有基本路径匹配Actions\u single\u PVC的请求

而下面的代码是将中间件应用于所有全局请求

app.use((err, req, res, next) => {

    console.log('invalid token');

});

如果你点击url/Actions\u single\u PVC,那么Actions\u single\u PVC中的中间件就会被点击

这是因为以下代码仅将中间件应用于具有基本路径匹配操作的请求

而下面的代码是将中间件应用于所有全局请求

app.use((err, req, res, next) => {

    console.log('invalid token');

});
如果你点击url/Actions\u single\u PVC,那么Actions\u single\u PVC中的中间件就会被点击

app.use('/Actions_single_PVC', Actions_Single_PVC);
app.use((err, req, res, next) => {

    console.log('invalid token');

});