Как заставить этот код работать в современных nodejs? - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь реализовать простой веб-интерфейс, в котором я вижу, как выполнить tail -f моего файла журнала.

Найдена ссылка ниже

https://thoughtbot.com/blog/real-time-online-activity-monitor-example-with-node-js-and-websocket

Он кажется очень старым и несовместимым с современными node.j.

Я попытался просмотреть документацию по node.j`, но не смог это исправить. Создание дочернего процесса вызывает некоторые проблемы.

var filename = process.argv[2];

if (!filename)
  return sys.puts("Usage: node watcher.js filename");

var tail = process.createChildProcess("tail", ["-f", filename]);
console.log("start tailing");

tail.addListener("output", function (data) {
  console(data);
});


var http = require("http");
http.createServer(function(req,res){
  res.sendHeader(200,{"Content-Type": "text/plain"});
  tail.addListener("output", function (data) {
    res.sendBody(data);
  });
}).listen(8000);

Я хочу отправить этот журнал tailf'd на другой сервер, который будет запускать приложение nodejs, чтобы прочитать это. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 10 ноября 2019

Я просмотрел всю документацию по nodejs, но не нашел ни одной версии, в которой было бы process.createChildProcess().

Однако вы можете заменить ее, используя встроенный модуль child-process:

const filename = process.argv[2];

if (!filename){
  console.log("Usage: node watcher.js filename");
  process.exit(0)
}

const child = require('child-process')

const tail = child.exec("tail", ["-f", filename],{shell:true});
console.log("start tailing");

tail.stdout.on("data", function (data) {
  console.log(data);
});


const http = require("http");
http.createServer(function(req,res){
  res.writeHead(200,{"Content-Type": "text/plain"});
  tail.stdout.on("data", function (data) {
    res.write(data);
  });
}).listen(8000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...