Mam skrypt PhantomJS/CasperJS, który uruchamiam z poziomu skryptu node.js, używając process.spawn()
. Ponieważ CasperJS nie obsługuje modułów require()
, próbuję wydrukować polecenia od CasperJS do stdout
, a następnie wczytać je ze skryptu node.js za pomocą spawn.stdout.on('data', function(data) {});
, aby dodać obiekty do redis/mangusta (zawiłe, tak , ale wydaje się prostsze niż ustawienie usługi internetowej dla tego ...) Skrypt CasperJS wykonuje serię poleceń i tworzy, powiedzmy, 20 zrzutów ekranu, które należy dodać do mojej bazy danych.Dane wyjściowe sparsowanego potomnego wiersza procesowego node.js według wiersza
Jednak nie mogę dowiedzieć się, jak przełamać data
zmiennej (a Buffer
?) Na linii ... Próbowałem przekształcenie go na sznurku, a potem robi zastąpić, próbowałem robić spawn.stdout.setEncoding('utf8');
ale nic nie wydaje się działać ...
Oto co mam teraz
var spawn = require('child_process').spawn;
var bin = "casperjs"
//googlelinks.js is the example given at http://casperjs.org/#quickstart
var args = ['scripts/googlelinks.js'];
var cspr = spawn(bin, args);
//cspr.stdout.setEncoding('utf8');
cspr.stdout.on('data', function (data) {
var buff = new Buffer(data);
console.log("foo: " + buff.toString('utf8'));
});
cspr.stderr.on('data', function (data) {
data += '';
console.log(data.replace("\n", "\nstderr: "));
});
cspr.on('exit', function (code) {
console.log('child process exited with code ' + code);
process.exit(code);
});
https://gist.github.com/2131204
Czy to najlepsze podejście? Wygląda na to, że zdarzenie 'stdout.on ('data')' uruchamia się w zależności od rozmiaru bufora, niekoniecznie nowych linii. Czy to prawda? –