javascript - 如何在 Node.js 上使用 co 模块捕获异常?

标签 javascript node.js sails.js bluebird co

我在 sail 框架上使用 co 模块进行编码。

我想捕获 InvalidError 但错误日志显示“未定义”。

如何修复此代码?

Co 模块无法捕获 ErrorType 规范??

detail: function (req, res) {
  co(function *() {
    let errors = [];
    const text = req.param('text');

    if (text.length <= 0) {
      throw new InvalidError('text is required');
    }

  }).catch((InvalidError, err) => {
    sails.log.warn(err);
    errors.push(err.message);
    req.flash('errors', errors);
    res.redirect('/somewhere/view');
  }).catch((Error, err) => {
    sails.log.error(err);
    res.serverError(err);
  });
}

错误日志在这里

warn: undefined
error: undefined
error: Sending empty 500 ("Server Error") response

最佳答案

catch 方法只接受一个参数:err。尝试:

.catch(err => {
    sails.log.warn(err);
    errors.push(err.message);
    req.flash('errors', errors);
    res.redirect('/somewhere/view');
})

关于javascript - 如何在 Node.js 上使用 co 模块捕获异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37802453/

相关文章:

javascript - Gulp 在源文件数组上顺序执行同一任务

javascript - 将带有Javascript的音频文件添加到AmCharts

node.js - 更新集合内数组内的对象

node.js - 如果 redis 不可用,如何忽略它?

javascript - Node 和 React 不同步

javascript - IE 中的 JQuery 复选框列表问题?保存为开、开、开的值应为 10、12、13 等

javascript - 在 JavaScript 中链接 .bind() 调用。意想不到的结果?

javascript - Socket.io channel 和消息回调

javascript - 如何在 Sails.js 中提供自定义模型验证消息?

node.js - SailsJS 使用一个 Controller 操作调用两个 Service 方法