首页 > 解决方案 > 在处理程序中引发错误时未调用 onPostHandler 扩展

问题描述

我正在从 hapi14 升级到 hapi17,当在处理程序中抛出或返回错误时 onPostHandlers 未被调用,这未列为 16 或 17 中的重大更改。

我相信这是从回调更改为异步的结果,但我很想确认它或找出在处理程序中抛出错误时阻止调用 onPostHandler 扩展的问题。

const Boom = require('boom');

const extensions = {
  handleOnPostHandler: function (request, h) {
    console.log('we hit it wooo');
    return h.continue;
  }
};

const operations = {
  error: {
    description: 'Endpoint that simulates errors',
    auth: false,
    handler: function (request, h) {
      // comment me out to call the onPostHandler
      throw new Boom('an error');

      // uncomment me to call the onPostHandler
      // return 'potato';
    }
  }
};

exports.register = function (server) {
  server.ext('onPostHandler', extensions.handleOnPostHandler);
  server.route({ method: 'GET', path: '/debug/error', config: operations.error });
};

我错过了一个严重的错误还是这是预期的?

标签: node.jshapijs

解决方案


这是在Hapi6中删除的未记录功能,因此在升级到 >16 时无法模拟此功能。


推荐阅读