所以我最近在Mac上使用the 1.7 fix使用了phantomjs-node而没有任何问题。
然而,当我尝试在我的Ubuntu 12.04机器上运行它时,它给我带来了以下问题:
phantom stdout:ReferenceError:找不到变量:socket phantomjs://webpage.evaluate():1 phantomjs://webpage.evaluate():1 phantomjs://webpage.evaluate():1
修改
导致此问题的行位于shim.js
第1684行:
evil = "function(){socket.emit('message', " + (JSON.stringify(JSON.stringify(req))) + " + '\\n');}";
似乎与this PhantomJS issue有关。
有关如何解决上述问题的任何想法都会有所帮助。
所以我尝试使用phantom-proxy,因为它意味着保持最新版本的phantomjs-node。
但是,在我的ubuntu 12.04计算机上运行时遇到了不同的问题:
SyntaxError: Parse error
TypeError: 'undefined' is not a function (evaluating 'require('./webpage').create(this)')
~/node_modules/phantom-proxy/lib/server/webserver.js:11
~/node_modules/phantom-proxy/lib/server/webserver.js:164
~/node_modules/phantom-proxy/lib/server/webserver.js:165
我确实发现存在解析错误,但这是通过复制readme.md
提供的其中一个示例。
对此解决方案的任何帮助都将不胜感激。
答案 0 :(得分:1)
好的,所以我使用 1 选项解决了这个问题。
它要求我使用
进行新节点项目 express myapp
npm install
等..然后在我的package.json文件中附加了依赖项:
"phantom":"git://github.com/amir20/phantomjs-node.git#phantom-1.7-fix"
npm install
然后我测试了提供的一个例子:
var phantom = require('phantom');
phantom.create(function (ph) {
console.log('instance created');
ph.createPage(function (page) {
console.log('spooled up');
page.open('http://www.google.com', function (status) {
console.log(status);
page.release();
});
});
});
这一切都运作正常。
注意:我不会在我的ubuntu机器上使用代理,这就是它工作的原因,在我确实有代理的机器上,示例无法执行,这使我成为了事情它不会在heroku盒子上工作,但是我今天会进行测试并用结果编辑这个答案。
修改强>
我通过在heroku上部署我的应用程序来检查此解决方案。运行我的应用程序时,它在预期的点上失败了:
phantom stdout: ReferenceError: Can't find variable: socket
phantomjs://webpage.evaluate():1
phantomjs://webpage.evaluate():1
phantomjs://webpage.evaluate():1
这是因为除非您指定代理设置,否则phantomjs-node无法在代理后面工作,并且由于l在heroku上运行,因此无法指定这些设置。