【发布时间】:2020-08-16 18:37:38
【问题描述】:
我试图弄清楚 Sails.js 中的错误处理是如何工作的。不幸的是,文档中的代码示例并未涵盖此用例。
问题是我不断收到此错误:
UsageError: `.intercept()` handler returned `undefined`, but this should never happen.
Regardless, here is a summary of the original underlying error:
现在我要做的就是调用一个助手,如果它失败了,那么我想捕捉错误(任何),记录它并运行一些代码。如果我不使用 Sails 而是使用正常的承诺,我会这样处理它:
await helper().catch((err) => { // run some code }
在 Sails 中,我应该能够使用 .intercept() 而不是 .catch()
我的代码如下所示:
// ExportController.js
const csv = await sails.helpers.files.convertToCsv(data)
.intercept((err) => {
sails.log.error(err)
req.addFlash('error_messages', 'Error parsing data to csv!')
return res.redirect(`/`);
})
// convert-to-csv.js
if (!Array.isArray(inputs.data)) {
throw new Error('invalid inputs.data type: ' + typeof inputs.data)
};
现在如何避免出现此错误? code examples 仅显示处理显式添加到退出对象的错误的情况,但不显示一般错误处理的情况。 In the docs 它说如果过滤器参数是
未提供,所有错误都会被拦截。
或者这仅适用于数据库查询?因为 .intercept() 文档部分属于该子类别。
【问题讨论】: