运行PhantomJS& node.js一起在Ubuntu上

时间:2012-11-21 09:42:46

标签: node.js ubuntu phantomjs

  1. 所以我最近在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有关。

    有关如何解决上述问题的任何想法都会有所帮助。

  2. 所以我尝试使用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提供的其中一个示例。

    对此解决方案的任何帮助都将不胜感激。

1 个答案:

答案 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上运行,因此无法指定这些设置。