我有一些看起来像这样的代码
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;)
的回调中,但是如果该过程一次失败,则每次会话都将失败,直到会话结束,即使在提供所有有效信息的情况下也是如此-如果这有意义..
我对节点一无所知,并且该软件包没有很多支持。
答案 0 :(得分:0)
如果要在处理特定错误后停止处理流,则必须抛出错误:
.on('error', e => throw error.message)