1

Heroku で Weinreセットアップしようとしていますが、いくつか問題があります。

weinre npm 依存関係を持つ package.json と次のような Procfile を使用するだけで、なんとかアプリをビルドできました。

web: node_modules/weinre/weinre --httpPort $PORT

最初はすべてが機能しているように見えます。クライアントは UI を表示し、JS ファイルは正常に読み込まれますが、デバッグは機能せず、クライアントはサーバー側に表示されません。

ログを見ていると、/ws/target/* または /ws/client/* を含むすべてのリクエストで 404 エラーが発生し続けることがわかりました。

2012-05-31T22:37:53+00:00 heroku[router]: GET xxxx.herokuapp.com/target/target-script.js dyno=web.1 queue=0 wait=0ms service=10ms status=200 bytes=190900
2012-05-31T22:37:36+00:00 heroku[router]: GET xxxx.herokuapp.com/ws/target/t-3 dyno=web.1 queue=0 wait=0ms service=3ms status=404 bytes=9
2012-05-31T22:36:39+00:00 heroku[router]: POST xxxx.herokuapp.com/ws/client/c-1 dyno=web.1 queue=0 wait=0ms service=40ms status=404 bytes=9

このセットアップはローカルで問題なく動作します。

Procilfe も試してみました--boundHost 0.0.0.0が、同じエラーが発生しました。ホストとしてherokuアプリのドメイン/サブドメインを使用すると、weinre: error running server: Error: listen EADDRNOTAVAILエラーが発生しました

必要に応じて、github リポジトリでソースをチェックアウトできます

https://github.com/felipesabino/weinre-heroku

編集: Heroku でサポートされていない WebSockets に関連している可能性があります: https://devcenter.heroku.com/articles/http-routing#websockets

最も奇妙なことは、PhoneGap の weinre デバッグ ページでも同じ問題が発生することです http://debug.phonegap.com/

これを解決する方法を知っている人はいますか?

4

3 に答える 3

2

私は現在、Heroku を実行していますが、Heroku を機能させようとしていたときは本当に悪夢だったことを覚えています。

これは2.0.0-pre-H0WVARLU-incubatingweinre を使用していたので、少し異なるかもしれませんが、私がしなければならなかったことは次のとおりです。

  • weinre 自体を変更します。すべてのホストにバインドするように weinre に指示する必要がありました。cli.coffeeファイルを変更し、をデフォルトとして設定boundHostしました。-all-
  • あなたが入ってきたアドレスはプロキシを介して再マッピングされ、決して一致しなかったため、if remoteAddressチェックインをお勧めしますchannelManager.coffee
  • 詳細なデバッグを有効にすると、実際にはこれを実行する必要はありませんが、エラーが発生している場所 (およびリクエストがルーティングされなかった理由) を追跡するのがはるかに簡単になりました。

私のProcfileは、weinreをできるだけ「ネイティブ」に使用しようとしたため、非常にシンプルになりました(レポにはweinreのみが含まれていることに注意してください。これは、あなたがやっているようなモジュールではありません):

web: node weinre

process.env.PORTProcfile から渡されるのではなく、によって処理されるポートの変更を残しました。

基本的に私が見つけたのは、weinre は実際にはプロキシの背後で動作するように設計されていないということです!

于 2012-06-06T05:56:46.080 に答える
2

このプル リクエストを参照してください https://github.com/apache/incubator-cordova-weinre/pull/10

他の変更は必要ないことに注意してください。Procfile はオプションを設定でき (そうあるべきように)、Weinre はノード モジュールとして適切に使用されます。

package.json (修正を含む)

"dependencies" : {
    "weinre": "https://github.com/downloads/AppGyver/incubator-cordova-weinre/apache-cordova-weinre-2.0.0-pre-H77LBWIW-incubating-bin.tar.gz"
},

プロフィール

web: node_modules/weinre/weinre --httpPort $PORT --boundHost -all- --debug true --verbose true
于 2012-09-17T14:07:46.330 に答える
0
  • weinre 自体を変更します。すべてのホストにバインドするように weinre に指示する必要がありました。cli.coffee ファイルを変更し、boundHost をデフォルトとして -all- に設定しました。
  • あなたが入ってきたアドレスはプロキシを介して再マッピングされ、決して一致しなかったため、channelManager.coffee の if remoteAddress チェックを推奨しました。

この 2 つのヒントはappfogでも大いに役立ちました。

また、する必要があります

  • weinre の名前を app.js に変更します
  • ローカルのコーヒースクリプトが必要
  • cli を変数に代入し、run direct を実行します
  • cli.coffeeを拡張->ポートprocess.env.PORT
于 2012-11-15T15:30:10.383 に答える