そのため、最近、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の問題に関連しているようです。
上記のこの問題を修正する方法についてのアイデアは役に立ちます。
そこで、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
。この解決策についての助けをいただければ幸いです。
質問する
1541 次
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 に答える