在Hapi,在NodeJS应用程序中,Boom正在向我隐藏我的问题

时间:2016-09-26 15:08:02

标签: node.js hapijs

我刚刚开始研究一个API,它是一个NodeJS应用程序,它使用Hapi,后者又使用Boom。繁荣是伟大的,但它隐藏了一些我希望看到的错误。

在我的Mac上本地工作,我打开2个终端窗口。在一个终端我运行" npm start"它使API在本地运行。在另一个终端中,我使用此cURL调用测试API:

curl 'http://needi.local:8080/search/uber' -X GET --header 'Accept: application/json' --header 'x-api-key: 2gt7Pt2LU194KKcNnc'

这很棒!我得到了我期望的所有数据。

所以现在我把它放在一个bash脚本中:

#!/usr/bin/ sh
curl 'http://needi.local:8080/search/uber' -X GET --header 'Accept: application/json' --header 'x-api-key: 2gt7Pt2LU194KKcNnc'

现在我运行它而不是获取数据,我得到了这个:

  % Total    % Received % Xferd  Average Speed   Time    Time     
Time  Current

                                 Dload  Upload   Total   Spent    
Left  Speed

100   109  100   109    0     0   3858      0 --:--:-- --:--:-- 
--:--:--  3892

{

  "statusCode": 500,

  "error": "Internal Server Error",


  "message": "An internal server error occurred"

}

此消息似乎是从Boom生成的。当我grep代码时,我只看到来自Boom的这条消息。该消息如下所述:

https://github.com/hapijs/boom

这一切都很好,直到某一点。如果出现问题,Boom应该发回该消息。没关系。

但无论问题是什么,它都不会出现在我运行应用程序的其他终端窗口中。我希望堆栈跟踪能够显示出来,但它并不存在。

所以也许Boom吞下这个错误?如何让错误出现在日志中(运行API的终端)。

或许Boom是无辜的。也许这仅仅是一个未被捕获的异常案例?

1 个答案:

答案 0 :(得分:1)

您可能想看看在您的 JavaScript 文件中实现繁荣的方式。

根据 official 繁荣文档:

<块引用>

所有 500 个错误都会对最终用户隐藏您的消息。

此外,文档还解释了如果没有在动臂对象中设置状态代码会发生什么:

<块引用>

如果尚未设置状态代码,则默认为 500。

默认为 500 错误代码是一种安全措施,可防止将实际错误暴露给客户端。