У меня есть скрипт PhantomJS / CasperJS, который я запускаю из скрипта node.js, используя process.spawn()
. Поскольку CasperJS не поддерживает require()
модули ing, я пытаюсь распечатать команды из CasperJS в stdout
, а затем прочитать их из моего скрипта node.js, используя spawn.stdout.on('data', function(data) {});
для таких вещей, как добавление объектов в redis / mongoose (сложный, да, но кажется более простым, чем настройка веб-службы для этого ...) Сценарий CasperJS выполняет серию команд и создает, скажем, 20 снимков экрана, которые необходимо добавить в мою базу данных.
Однако я не могу понять, как разбить переменную data
(a Buffer
?) На строки ... Я пытался преобразовать ее в строку, а затем делал замену, я пытался делает spawn.stdout.setEncoding('utf8');
но ничего не работает ...
Вот что у меня сейчас
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