Node.js 我应该在sails.js中将自定义错误放在哪里?
我想知道什么是最佳实践,我是否应该创建:Node.js 我应该在sails.js中将自定义错误放在哪里?,node.js,error-handling,sails.js,Node.js,Error Handling,Sails.js,我想知道什么是最佳实践,我是否应该创建: 一个目录,其中静态声明我的应用程序使用的所有错误,如api/errors/custom1Error 直接在文件中声明它们 或者将文件直接放在需要该错误的目录中,如api/controller/error/formInvalidError 其他选择 一个简单的方法是在api/responses下添加错误作为自定义响应。这样,即使是调用也变得非常整洁。虽然上面说应该直接将它们添加到responses目录中,但我确信一定有办法将它们嵌套在responses/
- 一个目录,其中静态声明我的应用程序使用的所有错误,如api/errors/custom1Error
- 直接在文件中声明它们
- 或者将文件直接放在需要该错误的目录中,如api/controller/error/formInvalidError
- 其他选择李>
- 一个简单的方法是在
下添加错误作为自定义响应。这样,即使是调用也变得非常整洁。虽然上面说应该直接将它们添加到api/responses
目录中,但我确信一定有办法将它们嵌套在responses
目录下。我将尝试一下,稍后发布更新 好的,通过快速搜索,我找不到任何方法来嵌套响应,但您可以使用一个不太整洁的小解决方法: 使用所有自定义错误响应处理程序创建responses/errors
目录。创建一个应用程序,并将其命名为responses/errors
。然后在调用custom.js
时指定响应名称 我添加了一个简短的片段只是为了说明: api/responses/custom.js:res.custom()
从控制器:var customErrors = { customError1: require('./errors/customError1'), customError2: require('./errors/customError2') }; module.exports = function custom (errorName, data) { var req = this.req; var res = this.res; if (customErrors[errorName]) return customErrors[errorName](req, res, data); else return res.negotiate(); }
res.custom('authError',数据)代码> 如果不需要对不同的错误进行逻辑处理,则可以删除整个
目录,直接从errors/
调用相应的视图:custom.js
(您应该首先检查该视图是否存在。在链接的页面上了解其存在方式。) 尽管我出于某些目的(划分路由等)使用了类似的方法,但肯定应该有一种方法包含在不同目录中定义的响应处理程序。(也许通过重新配置一些grunt任务?)我会尝试找出答案,如果我发现任何成功的话,会更新 祝你好运 更新 好的,我发现module.exports = function custom (viewName, data) { var req = this.req; var res = this.res; return res.view('errors/' + viewName, data);//assuming you have error views in views/errors }
钩子添加到响应
,而不检查它们是否是目录。因此,在res
下添加目录会导致responses
来自TypeError
。我可能读错了,但我想可以得出这样的结论:目前不可能在那里添加目录,所以我想您必须坚持上面的解决方案之一lodash