1
  1. そのため、最近、Macで1.7フィックスを使用して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');}";
    

    これは、このPhantomJSの問題に関連しているようです。

    上記のこの問題を修正する方法についてのアイデアは役に立ちます。

  2. そこで、phantomjs-nodeの最新バージョンを対象としているため、代わりにphantom-proxyを使用してみました。

    ただし、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
    

    解析エラーがあることは確かですが、これは提供されている例の1つをコピーしたことによるものです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

次に、提供されている例の1つをテストしました。

   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 に答える