Ответ 1
Все, что вы делаете, является правильным, за исключением последнего утверждения. Вы передаете результаты потока MsgExtractStream a Transform
с objectMode
на простой поток.
Когда вы трубу, вы читаете материал из msgPage, вы получаете объекты, а затем записываете их в outPage. Но outPage не имеет objectMode
on, поэтому ему нужны строки/буфер и выдает ошибку при записи на нее.
Попробуйте сделать только одну из труб, она будет работать.
Изменить
Это был мой метод для отладки ошибки, один из которых не вызывает ошибки. Сначала мы проверим поток данных, который выглядит примерно так:
string stream -> object stream -> string stream
string object
Часть, которую вы получаете в MsgExtractStream, представляет собой строку из inPage. Было бы хорошо, если бы какой-либо объект не просто был строкой. В преобразовании вы записываете фрагмент, завернутый в объект для вывода. Вы получаете строку и записываете объект.
Теперь у вас есть два варианта. Чтобы решить проблему, MsgExtractStream
должен возвращать строку, например, когда вы делаете this.push(chunk)
, чтобы работала следующая труба.
Или, если вам нужен поток объектов, вы получаете от MsgExtractStream
. Вам понадобится еще одна такая трубка:
string stream -> object stream -> object stream -> string stream
string object string
Первый поток объектов создает объект из строки, второй создает строку из объекта. Вам придется обрабатывать тип объектов вдоль цепочки, чтобы он работал.