(NodeJs)PhantomJs子进程的命令行参数以及脚本args

时间:2017-05-16 23:23:14

标签: node.js phantomjs spawn

我有以下代码可以使用:

var Path = require('path')
var Phantomjs = require('phantomjs2')
var phantomjsPath = Phantomjs.path
var childArgs = [
      Path.join(__dirname, 'phantomjs-worker.js'),
      'http://...some login url...',
      3000, //login timeout
      'http://...some address to render as image...',
      5000, //address timeout
      '...output image file path...',
      1000, //page width
      1000, //page height
      1234 //some id
    ]            
var child = Proc.spawn(phantomjsPath, childArgs, { cwd: process.cwd() })

在phantom-worker.js中:

var argsOffset = 0;
var login = system.args[argsOffset + 1];
var logintimeout = system.args[argsOffset + 2];
var address = system.args[argsOffset + 3];
var addresstimeout = system.args[argsOffset + 4];
var output = system.args[argsOffset + 5];
var pageWidth = parseInt(system.args[argsOffset + 6]);
var pageHeight = parseInt(system.args[argsOffset + 7]);
var pageId = system.args[argsOffset + 8];
...

我需要能够传入

--ignore-ssl-errors=true --ssl-protocol=tlsv1

我尝试将这些作为前两个参数添加但是它不起作用。它出于某种原因开始寻找输出图像文件路径,显然会失败。

有没有办法传递这些命令行参数以及脚本及其子参数?

1 个答案:

答案 0 :(得分:1)

以下按预期工作。错误不在代码的这一部分。相反,由于内存问题导致幻像进程退出,导致渲染的图像文件无法创建。

var Path = require('path')
var Phantomjs = require('phantomjs2')
var phantomjsPath = Phantomjs.path
var childArgs = [
      '--ignore-ssl-errors=true',
      '--ssl-protocol=any',
      '--web-security=false',
      Path.join(__dirname, 'phantomjs-worker.js'),
      'http://...some login url...',
      3000, //login timeout
      'http://...some address to render as image...',
      5000, //address timeout
      '...output image file path...',
      1000, //page width
      1000, //page height
      1234 //some id
    ]            
var child = Proc.spawn(phantomjsPath, childArgs, { cwd: process.cwd() })

工人:

var webpage = require('webpage'),
    system = require('system');

var login = system.args[1];
var logintimeout = system.args[2];
var address = system.args[3];
var addresstimeout = system.args[4];
var output = system.args[5];
var pageWidth = parseInt(system.args[6]);
var pageHeight = parseInt(system.args[7]);
var pageId = system.args[8];