CasperJS无法识别PhantomJS网页模块

时间:2014-03-01 12:36:40

标签: phantomjs casperjs

Casper 1.1.0-beta3和Phantom 1.9.7的运行最新版本。但是,即使是最简单的casper脚本:

var casper = require('casper').create();

casper.start('http://casperjs.org/', function() {
    this.echo('foo');
});

casper.run();

因类型错误而失败

TypeError: 'undefined' is not a function (evaluating 'require('webpage').create()')
  /usr/local/src/casperjs/modules/casper.js:2446 in createPage
  /usr/local/src/casperjs/modules/casper.js:1703 in start
  /var/sites/phantom/simple.js:5

'网页'需要的是PhantomJS模块,在运行幻像脚本时工作正常。 require方法似乎也可以正常工作(按照上面的第1行)加载自身,所以看起来PhantomJS只是被选择性识别。

Phantom安装在我的$ PATH上的/ usr / local / bin中。 Casper符号链接到同一位置。 O / S是Ubuntu 13.10。

对于我如何说服Casper与Phantom(或反之亦然)玩得很好的任何建议都将非常感激。

2 个答案:

答案 0 :(得分:5)

只是一个注释,如果有人登陆这个问题 - 我在package.json和node-modules目录中有一个本地安装的npm'网页'模块,我得到了同样的错误。清除这些允许casperjs找到全局安装的幻像网页模块并为我修复此问题。

答案 1 :(得分:1)

问题原来是我在我尝试执行Casper脚本的目录中有一个名为webpage.js的Phantom脚本。我怀疑Casper的补丁版Phantom的加载器误将其误认为Phantom网页模块。

名字的共同发生使得这个事件不太可能发生在其他人身上。但如果确实如此,仅重命名违规脚本应该处理问题,我建议将casperjs/bin/casperjs文件的native_args列表中的所有条目视为保留字。