gpt4 book ai didi

javascript - hapi.js 处理错误的最佳方式

转载 作者:IT老高 更新时间:2023-10-28 23:10:45 26 4
gpt4 key购买 nike

我正在使用 hapi.js 创建我的第一个 node.js REST Web 服务。我很好奇处理错误的最佳方法,比如说我的 dao 层。我是否在我的 dao 层中 throw 它们,然后只是 try/catch block 来处理它们并在我的 Controller 中发回错误,或者有没有更好的方法让酷 child 正在处理这个吗?

路由/task.js

var taskController = require('../controllers/task');
//var taskValidate = require('../validate/task');

module.exports = function() {
return [
{
method: 'POST',
path: '/tasks/{id}',
config : {
handler: taskController.createTask//,
//validate : taskValidate.blah
}
}
]
}();

Controller /task.js

var taskDao = require('../dao/task');

module.exports = function() {

return {

/**
* Creates a task
*
* @param req
* @param reply
*/
createTask: function createTask(req, reply) {

taskDao.createTask(req.payload, function (err, data) {

// TODO: Properly handle errors in hapi
if (err) {
console.log(err);
}

reply(data);
});

}
}();

dao/task.js

module.exports = function() {

return {
createTask: function createTask(payload, callback) {

... Something here which creates the err variable...

if (err) {
console.log(err); // How to properly handle this bad boy
}
}
}();

最佳答案

带有完全可定制错误模板/消息的通用解决方案

我们编写了一个可以无缝处理所有错误的 Hapi 插件:npmjs.com/package/hapi-error

Build Status codecov.io Code Climate Dependency Status

它让您可以通过 3 个简单的步骤定义自己的自定义错误页面。

1。安装 plugin来自 npm:

npm install hapi-error --save

2。在您的 Hapi 项目中包含该插件

在您注册您的服务器时包含该插件:

server.register([require('hapi-error'), require('vision')], function (err) {
// your server code here ...
});

See: /example/server_example.js for simple example

3。确保您有一个名为 error_template

的 View

Note: hapi-error plugin expects you are using Vision (the standard view rendering library for Hapi apps) which allows you to use Handlebars, Jade, React, etc. for your templates.

您的 error_template.html(error_template.ext error_template.jsx)应该使用 3将被传递的变量:

  • errorTitle - Hapi 生成的错误图 block
  • statusCode - *HTTP statusCode 发送到客户端例如:404(未找到)
  • errorMessage - 人性化的错误信息

for an example see: /example/error_template.html

就是这样!现在您的 Hapi App 可以处理所有类型的错误,您也可以抛出自己的自定义错误!

hapi-error-screens

Note: hapi-error works for REST/APIs too. if the content type header (headers.acceps) is set to application/json then your app will return a JSON error to the client, otherwise an HTML page will be served.

关于javascript - hapi.js 处理错误的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24682656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com