错误处理程序不适用于404 swagger express

时间:2018-08-27 08:38:33

标签: node.js express swagger

我想处理所有错误,但是在404错误上-大摇大摆地使用默认的错误处理程序,该如何解决?

(无法获取/ api / v2)-默认中间件

这是我的代码:

const SwaggerTools = require('swagger-tools');
const app = require('express')();
const SwaggerParser = require('swagger-parser');
const swaggerUi = require('swagger-ui-express');

const errorHandler = function(err, req, res, next) {
  res.send('my mega error handler')
}

module.exports = app; // for testing

let swaggerConfig = {
  appRoot: __dirname // <---
};

const swaggerDocument = './api/swagger/swagger.yaml';
app.use(errorHandler);

SwaggerParser.validate(swaggerDocument, (err, api) => {
  if (err) {
    console.error(err);
  } else {
    console.log('API name: %s, Version: %s', api.info.title, api.info.version);
    SwaggerTools.initializeMiddleware(api, (middleware) => {
      app.use(middleware.swaggerMetadata());


      // Validate Swagger requests
      app.use(middleware.swaggerValidator({
        validateResponse: true,
      }));

      app.use(errorHandler);
      app.use(middleware.swaggerRouter({ useStubs: true, controllers: './api/controllers' }));

      app.use(errorHandler);

      const showExplorer = false;
      const options = {
        validatorUrl: null,
      };

      app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(api, showExplorer, options));
      // Start the server
      const port = process.env.SERVER_PORT;
      app.listen(port, () => {
        console.log('server started at port:', port);
      });
    });
  }
});

我曾尝试在某些地方包含中间件,但没有任何效果

0 个答案:

没有答案