首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HapiJS错误处理

HapiJS错误处理
EN

Stack Overflow用户
提问于 2017-07-24 02:15:52
回答 1查看 434关注 0票数 0

我已经创建了如下错误实例:

代码语言:javascript
复制
class InsufficientScope extends Error {
  constructor(resource = false) {
    const errorMessage = resource
      ? 'User does not have enough privileges to access this resource.'
      : `User does not have enough privileges to access the ${resource}`;

    super(errorMessage);

    this.type = 'authorization_error';
    this.statusCode = '403';
  }
}

当我在像return reply(new InsufficientScope());这样的处理程序中抛出这些错误时,它总是以某种方式被转换为Boom对象。是否在Hapi中抛出的每个错误都被转换为具有其属性的Boom对象?

因为我希望能够指定某些特定错误的行为(例如,记录yes/no等)。通过onPreResponse扩展点。但无论是我自己的错误还是Hapi抛出的错误,我都无法区分,因为它们看起来都是一样的。

我也不能做这样的事情:

代码语言:javascript
复制
if (req.response instanceof InsufficientScope) {
 // do something
}

我也不能使用Boom.create,因为它不是一个实例,而只是一个普通对象。

EN

回答 1

Stack Overflow用户

发布于 2017-09-22 19:29:44

您可以通过两种方式完成此操作

1)回复(空,新的InsufficientScope())

2)onPreresponse钩子你可以这样做

代码语言:javascript
复制
server.ext('onPreResponse', (request, reply) => {
  if((request.response.isBoom)
  {
   return reply(null,new InsufficientScope())
   }
  return reply.continue();
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45268416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档