node.js - 无法从 inversify-express-utils Controller 全局捕获错误

标签 node.js express inversifyjs

我正在使用这个包 https://github.com/inversify/inversify-express-utils对于 nodejs 应用程序,我想有一个地方来处理来自 any Controller 的错误,我知道的方法是使用 express error handler , 但在这种情况下它似乎不起作用 - 没有人调用错误处理程序:

用户 Controller .ts

import {interfaces, controller, request, response, httpGet} from "inversify-express-utils";

@controller('/user')
class UserController implements interfaces.Controller {
    
    ....

    @httpGet('/')
    private async get(@request() req, @response() res) {
        throw new Error('BROKEN!');
    }
}

服务器.ts

....

const server = new InversifyExpressServer(container);

server.setConfig((app) => {
    ...
    
    app.use((err, req, res, next) => {
        console.log(err); // This never called
    });

    return app;
});
  1. 为什么没有调用处理程序?
  2. 使用 inversify-express 包有更优雅的方法吗?

最佳答案

你应该在初始化服务器时使用setErrorConfig,像这样:

server.setErrorConfig((app) => {
  app.use((err, req, res, next) => {
    if (err) {
      if (err instanceof HttpRedirectError) {
        return res.redirect(err.redirectUrl);
      }
      return res.json(Requester.createError(err));
    }
    next();
  });
});

关于node.js - 无法从 inversify-express-utils Controller 全局捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64699002/

相关文章:

node.js - 你能集中node_modules文件夹吗?

javascript - 将集群用于 Node.js Rest api

angularjs - 我如何开始使用 MEAN.IO?

node.js - 缺少@inject 注释,在使用扩展类进行反转时不会丢失

javascript - InversifyJS - 注入(inject)对象的特定实例

node.js - 在 Node.JS 中是否有管理简单博客的模块?

node.js - gulp 4版本问题导致所有任务失败

express - 将图像从 lambda 上传到 s3(损坏的文件)

javascript - 如何将数据从 Node/Express 服务器传递到客户端 (JavaScript),同时允许净化 HTML 但防止 XSS?