Error: Data should not be empty or the "fields" option should be included

Error: Data should not be empty or the "fields" option should be included

我有一些代码看起来像这样

try {
return inputStream
  .pipe(JSONStream.stringify())
  .on('error', e => next(`Stringify error: ${e}`))
  .pipe(Json2csvTransform)
  .on('error', e => next(`json2csv error: ${e}`))
  .pipe(res)
  .on('finish', () => console.log("Streaming of file is now complete."))
 } catch(error) {
return res.status(400).json({ message: msg('fileRetrievalError', -3) })
}

当我到达 .on('error', e => next('json2csv error: ${e}'))

这个过程并没有落到 catch,它只是一直在继续。我猜这是因为它被包裹在 next

我最终能够提取的错误是:

Error: Data should not be empty or the "fields" option should be included

我试图挖掘节点模块中的源代码,但这对我来说意义不大。

我想我有两个可能的解决方案:要么我需要了解来自 Json2csv 的错误的含义,要么我需要能够退出并关闭我的流。我试图将 return res.status(400).json({ message: msg('fileRetrievalError', -3) }) 推入 .on('error;) 的回调中,但如果该过程失败一次,它每次都会失败,直到会话结束,即使在提供所有有效信息时也是如此 - 如果这有意义..

我对节点知之甚少,而且这个包没有很多围绕它的支持。

如果你想在处理特定错误后停止处理流,你必须抛出错误:

.on('error', e => throw error.message)