所以我最近一直在使用 phantomjs-node 在我的 Mac 上使用1.7 修复,没有任何问题。
但是,当我尝试在我的 Ubuntu 12.04 机器上运行它时,它给了我以下问题:
幻影标准输出: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');}";
这似乎与这个 PhantomJS 问题有关。
关于如何解决上述问题的任何想法都会有所帮助。
所以我尝试使用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
提供的示例之一。对此解决方案的任何帮助将不胜感激。
问问题
1541 次
1 回答
1
好的,所以我使用选项1解决了这个问题。
它要求我使用
express myapp
npm install
等等..然后在我的 package.json 文件中我附加了依赖项:
"phantom":"git://github.com/amir20/phantomjs-node.git#phantom-1.7-fix"
npm install
l 然后测试了提供的示例之一:
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 上运行,l 无法指定这些设置。
于 2012-11-22T14:30:05.587 回答