我从命令行启动PhantomJS with option(其余部分被删除):
phantomjs --debug=false script.js
W想在script.js中读取--debug
标志状态:
var page = require('webpage').create();
var debug = // init boolean value depends of flag --debug from console
page.onConsoleMessage = function(msg) {
if(debug) {
console.log('Console:' + msg);
}
};
// ...
不幸system.args
不包含命令行选项。
答案 0 :(得分:0)
我一直在寻找谷歌并没有找到任何有用的提示。 我知道phantomjs不能使用npm模块 这是绝望的。 phantomjs系统模块不是节点系统模块,所以npm包几乎不能与phantomjs兼容。非常沮丧,我只能编写自己的命令行解析参数
创建一个文件commandLineArgs.js
module.exports = function (args, optionDefinitions) {
// via : https://stackoverflow.com/questions/35454087/read-phantomjs-command-line-options-inside-script
var result = {
args: [],
options: {}
};
for (var j in optionDefinitions) {
var def = optionDefinitions[j];
if (def['multiple'] === true) {
result.options[def['name']] = [];
}
}
checkPoint_i:for (var i = 1; i < args.length; i++) {
var arg = args[i];
if (args[i].slice(0, 1) === "-") {
var k = args[i].replace(/^-{1,2}/, '');
for (var j in optionDefinitions) {
var def = optionDefinitions[j];
if (def['name'] === k || def['alias'] === k) {
i++;
if (def['multiple'] === true) {
result.options[def['name']].push(args[i]);
} else {
result.options[k] = args[i];
}
continue checkPoint_i;
}
// no def so change to args
}
}
result.args.push(arg);
}
return result;
};
然后在您的代码中标记它,像这样使用
var commandLineArgs = require('./node_modules/command-line-args');
var optionDefinitions = [
{name: 'header', alias: 'H', type: String, multiple: true},
{name: 'debug'},
];
var command = commandLineArgs(system.args, optionDefinitions);
console.log(command.options['header']);
console.log(command.args);
运行:phantomjs yourSctipt.js --header "Host: google.com" --debug true http://www.google.com/
// output [Host: google.com]
// output [http://www.google.com/]
希望这可以帮到你