Ho uno script PhantomJS/CasperJS che sto eseguendo da uno script node.js utilizzando process.spawn()
. Dal momento che CasperJS non supporta i moduli require()
, sto provando a stampare i comandi da CasperJS a stdout
e poi li leggo dal mio script node.js usando spawn.stdout.on('data', function(data) {});
per fare cose come aggiungere oggetti a redis/mangusta (contorto, sì , ma sembra più semplice della creazione di un servizio Web per questo ...) Lo script CasperJS esegue una serie di comandi e crea, diciamo, 20 screenshot che devono essere aggiunti al mio database.Analizzare l'output del processo figlio spa.ed node.js riga per riga
Tuttavia, non riesco a capire come rompere il data
variabile (un Buffer
?) In linee ... Ho provato a convertirlo in una stringa e poi facendo una sostituzione, ho provato a fare spawn.stdout.setEncoding('utf8');
ma nulla sembra funzionare ...
Ecco quello che ho in questo momento
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
È questo l'approccio migliore? Sembra che l'evento 'stdout.on ('data')' si attivi a seconda della dimensione del buffer, non necessariamente delle nuove linee. È vero? –