Как перехватить цветной вывод порожденного процесса и отправить в браузер через nodejs? - PullRequest
0 голосов
/ 06 марта 2019

Я знаю, что в этом вопросе были различия, но ни одна из них, похоже, не охватывает эту конкретную проблему.

Я порождаю дочерний процесс и пытаюсь отправить вывод в браузер.Проблема в том, что раскраска ANSI не делает его на выходе.

Я импортировал ANSI-to-HTML, чтобы отобразить вывод ANSI, если я его получу, но мой порожденный потомок не сохраняет вывод.

  const process = spawn(
    'bash',
   [
      '-ic',
      '<command I am running>'
   ],
    );

  process.stdout.on('data', (data) => {
    console.log(`stdout: ${data}`);
    self.terminalOutput += convert.toHtml(`${data}`);

  });

  process.stderr.on('data', (data) => {
    console.log(`stderr: ${data}`);
    self.terminalOutput += convert.toHtml(`${data}`);
  });

  process.on('close', (code) => {
    console.log(`child process exited with code ${code}`);
    self.terminalOutput += convert.toHtml(`child process exited with code ${code}`)
  });

1 Ответ

0 голосов
/ 01 апреля 2019

Похоже, я нашел ответ здесь. `${data}` неявно преобразовывал данные, возвращаемые порожденным процессом (я полагаю, что при преобразовании типов неявно вызывался toString(), но я мог ошибаться здесь).

Таким образом, чтобы правильно передать данные в ansi-to-html, вы просто должны передать их напрямую

  process.stdout.on('data', (data) => {
    self.terminalOutput += convert.toHtml(data);
  });

  process.stderr.on('data', (data) => {
    self.terminalOutput += convert.toHtml(data);
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...