我正在尝试创建一个节点服务器,该服务器生成phantomjs进程以创建屏幕截图. grab.js脚本在执行时工作正常,我已经确认它写入stdout.问题是产生进程的节点代码只是挂起.我已经确认phantomj
这是呈现页面并将数据写入stdout的phantomjs代码(grab.js):
var page = require('webpage').create(), system = require('system'), fs = require('fs'); var url = system.args[1] || 'google.com'; page.viewportSize = { width: 1024, height: 1200 }; page.open(url, function() { var b64 = page.renderBase64('png'); fs.write('/dev/stdout', b64, 'w'); phantom.exit(); });
这是产生幻像进度并打印结果的节点代码(挂起):
var http = require('http'), exec = require('child_process').exec, fs = require('fs'); exec('phantomjs grab.js google.com', function(error, stdout, stderr) { console.log(error, stdout, stderr); });我有与exec类似的问题,然后切换到使用spawn而且它工作.
根据这个 article,当你希望子进程将巨大的二进制数据返回给Node时使用spawn,当你希望子进程返回简单状态消息时使用exec. 心连心