Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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/39.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 重写express常规错误处理_Javascript_Node.js_Express - Fatal编程技术网

Javascript 重写express常规错误处理

Javascript 重写express常规错误处理,javascript,node.js,express,Javascript,Node.js,Express,我试图用json对象覆盖express常规错误处理,但它不起作用 我测试它的方法是通过进行http get调用,该调用的路由不存在 我添加了错误处理中间件,但当我发出错误请求时,返回的仍然是错误请求 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Error</title> </head&

我试图用json对象覆盖express常规错误处理,但它不起作用

我测试它的方法是通过进行http get调用,该调用的路由不存在

我添加了错误处理中间件,但当我发出错误请求时,返回的仍然是错误请求

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /api/image/initialize</pre>
</body>
</html>

我花了很长时间才弄明白这一点,所以这里有一些人可能会在这个问题上举步维艰。如果找不到路径,则必须添加一个“全部捕获”路由,并将其转发到错误处理程序


您试图用它来做什么,而仅仅定义自己的中间件将无法处理?另外,请注意,这不会处理POST、PUT、PATCH等。。。请求。通常只需使用
app.use(function(req,res,next)=>{code here})
即可捕获Express FAQ中描述的所有类型的请求。
async function main() {

  // the startup initialization code, handle any initialization
  // code in the startup folder, and call thh function in index.js
  const {
    settings,
    projectCol
  } = await initialize();

  port = normalizePort(process.env.PORT || DEFAULT_PORT);
  var app = express();

  // view engine setup
  app.use(logger('dev'));
  app.use(express.urlencoded({ extended: true }));
  app.use(express.json());
  app.use(cookieParser());

  // allow so it be used on the same PC
  app.use( function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
  });

  // setup routes
  setupRoutes(app, { projectCol, settings });

  app.set('port', port);

  // error handling
  app.use( function (err, req, res, next) {

    if (res.headersSent) {
      return next(err)
    }

    return res.status(500).json({
        error: err.message
    });
  })

  app.listen(port);
  app.on('error', onError);
  app.on('listening', onListening);
}
  app.get('*', function(req, res, next) {
    let err = new Error(`${req.originalUrl} doesn't exist`); // Tells us which IP tried to reach a particular URL
    err.statusCode = 404;
    err.shouldRedirect = true; //New property on err so that our middleware will redirect
    next(err);
  });