NodeJs Stream для порожденного процесса и обратно, используя pipe - PullRequest
0 голосов
/ 11 октября 2018

У меня есть два файла, from.js и to.js.Я пытаюсь выполнить потоковую передачу на to.js с from.js, в то же время перечисляя вывод to.js в from.js, чтобы я мог контролировать выход to.js.

Мне кажется, это тривиальный случайВидимо, я что-то упускаю ... Не могу понять, что, хотя.

from.js

const {Readable} = require('stream'),
    {spawn} = require('child_process')
;
const log = (v) => console.log(v)
const to = spawn('node', ['./to.js']);

to.on('data', log);
to.on('error', log);

const from = new Readable({
    read() {
        this.push(Math.random().toString() + '\n');
    }
});

from
    .pipe(to.stdin)
;

to.js

process.stdin
    .pipe(process.stdout)
;

Я получаю Error: This socket is closed.Может ли кто-нибудь объяснить, почему это не работает.

{ Error: spawn node ENOENT
    at exports._errnoException (util.js:1020:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:197:32)
    at onErrorNT (internal/child_process.js:376:16)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
    at Module.runMain (module.js:606:11)
    at run (bootstrap_node.js:383:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:496:3
  code: 'ENOENT',
  errno: 'ENOENT',
  syscall: 'spawn node',
  path: 'node',
  spawnargs: [ './to.js' ] }
events.js:160
      throw er; // Unhandled 'error' event
      ^

Error: This socket is closed
    at Socket._writeGeneric (net.js:679:19)
    at Socket._write (net.js:730:8)
    at doWrite (_stream_writable.js:333:12)
    at writeOrBuffer (_stream_writable.js:319:5)
    at Socket.Writable.write (_stream_writable.js:245:11)
    at Socket.write (net.js:657:40)
    at Readable.ondata (_stream_readable.js:555:20)
    at emitOne (events.js:96:13)
    at Readable.emit (events.js:188:7)
    at Readable.read (_stream_readable.js:381:10)
...