我有一个 PhantomJS/CasperJS 脚本,我在 node.js 脚本中使用process.spawn()
. 由于 CasperJS 不支持require()
ing 模块,因此我尝试将 CasperJS 中的命令打印到stdout
然后从我的 node.js 脚本中读取它们,spawn.stdout.on('data', function(data) {});
以便执行诸如将对象添加到 redis/mongoose 之类的操作(令人费解,是的,但似乎比为此设置 Web 服务更简单...) 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);
});