1
  1. 所以我最近一直在使用 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 问题有关。

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

  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提供的示例之一。

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

4

1 回答 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 回答