Ошибка: данные не должны быть пустыми или должна быть включена опция "поля"

У меня есть код, который выглядит так

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)
Другие вопросы по тегам