Ошибка: данные не должны быть пустыми или должна быть включена опция "поля"
У меня есть код, который выглядит так
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;)
, но если процесс завершается с ошибкой один раз, он завершается неудачей каждый раз, пока сеанс не заканчивается, даже если он предоставляет всю действительную информацию - если это имеет смысл.
Я не знаю много об узле, и этот пакет не имеет большой поддержки вокруг него.
1 ответ
Если вы хотите остановить обработку потока после обработки определенной ошибки, вы должны выбросить ошибку:
.on('error', e => throw error.message)