最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

处理程序中抛出错误时未调用onPostHandler扩展名

运维笔记admin7浏览0评论

处理程序中抛出错误时未调用onPostHandler扩展名

处理程序中抛出错误时未调用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 });
};

我错过了一个严重的错误,或者这是预期的?

回答如下:

因为你在请求结束前抛出一个错误?只需从您的处理程序返回,然后将调用您的handleOnPostHandler

在life cycle methods的名单上,它说

路线交易

执行路由处理程序。

onPostHandler

request.response中包含的响应可能会被修改(但不会分配新值)。要返回不同的响应类型(例如,使用HTML响应替换错误),请返回新的响应值。

但是你不允许你的处理程序转移到onPostHandler,你会抛出一个错误。它接管了回应。

发布评论

评论列表(0)

  1. 暂无评论