我正在尝试使用节点phantomjs
生成外部进程child_process
,然后在初始化后将信息发送到该进程,这可能吗?
我有以下代码:
var spawn = require('child_process').spawn,
child = spawn('phantomjs');
child.stdin.setEncoding = 'utf-8';
child.stdout.pipe(process.stdout);
child.stdin.write("console.log('Hello from PhantomJS')");
但我在stdout上唯一得到的是phantomjs控制台的初始提示。
phantomjs>
所以似乎child.stdin.write
没有任何效果。
我不确定我是否可以在初始产卵时向phantomjs发送更多信息。
提前感谢。
答案 0 :(得分:76)
您还需要传递\n
符号才能使命令正常工作:
var spawn = require('child_process').spawn,
child = spawn('phantomjs');
child.stdin.setEncoding('utf-8');
child.stdout.pipe(process.stdout);
child.stdin.write("console.log('Hello from PhantomJS')\n");
child.stdin.end(); /// this call seems necessary, at least with plain node.js executable
答案 1 :(得分:0)
您需要用 write
和 cork
包围 uncork
,uncork
方法会刷新自调用 cork
后缓冲的所有数据。 child.stdin.end()
也会刷新数据,但不再接受数据。
var spawn = require('child_process').spawn,
child = spawn('phantomjs');
child.stdin.setEncoding('utf-8');
child.stdout.pipe(process.stdout);
child.stdin.cork();
child.stdin.write("console.log('Hello from PhantomJS')\n");
child.stdin.uncork();