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(或反之亦然)玩得很好的任何建议都将非常感激。
答案 0 :(得分:5)
只是一个注释,如果有人登陆这个问题 - 我在package.json和node-modules目录中有一个本地安装的npm'网页'模块,我得到了同样的错误。清除这些允许casperjs找到全局安装的幻像网页模块并为我修复此问题。
答案 1 :(得分:1)
问题原来是我在我尝试执行Casper脚本的目录中有一个名为webpage.js的Phantom脚本。我怀疑Casper的补丁版Phantom的加载器误将其误认为Phantom网页模块。
名字的共同发生使得这个事件不太可能发生在其他人身上。但如果确实如此,仅重命名违规脚本应该处理问题,我建议将casperjs/bin/casperjs
文件的native_args列表中的所有条目视为保留字。