開発用のローカル サーバー ( http://10.0.2.10:3000 )で実行される Meteor アプリがあります。ROOT_URL
が正しく設定されているため、この__meteor_runtime_config__.ROOT_URL
URL と同じです。もちろん、アプリは 10.0.2.0/24 内のクライアント コンピューターのブラウザーで完全に正常に動作します。アプリは、10.0.2.0/24 の一部でもある Android 携帯電話のモバイル chrome/firefox でも正常に動作しています。ただし、この携帯電話でアプリとして実行しようとすると、meteor run android-device --mobile-server http://10.0.2.10:3000/
奇妙なことが起こります。
アプリが初めて起動したとき (または、すべてのアプリ データを消去した後で初めて)、数秒間、正常に動作します (DB のコンテンツが読み込まれます)。その後、アプリがリロードされ、DB からのリモート コンテンツは読み込まれなくなります。Meteor が接続を試みる場所を確認するために、次の関数を追加しました。
Meteor.startup(function(){
console.log(__meteor_runtime_config__.ROOT_URL);
})
初めてリモート コンテンツが読み込まれると、予想どおりhttp://10.0.2.10:3000/が返されます。2 回目にリモート コンテンツが読み込まれないと、http://10.0.2.2:3000/が返されます。
問題は、Meteor/Cordova がこれを行う理由と、この動作を停止するにはどうすればよいかということです。明らかに、この方法でアプリをテストできないためです。FQDN と HTTPS プロキシがある場合に本番環境で機能するかどうかはまだわかりませんが、それは要点を超えています。
私のLANでは何も実行されていないため、10.0.2.2を見つけようとしましたが、このIPをどこにも指定しておらず、そこ/cordova-build/www/application/index.html
から生成されたと思われるものを見つけましたboilerplate_web.cordova.html
(このリンクhttps://searchcode.com/codesearch/view/91819963を参照) / )。ただし、Meteor は、これらの生成されたファイルをフォルダーでオーバーライドする可能性を提供するcordova-build-override
ため、全体を削除しました
if (/Android/i.test(navigator.userAgent)) {
//[...]
}
ブロックし、短い を追加しましたconsole.log('removed')
。これが呼び出されるので、オーバーライドが成功したことがわかり、ビルドされた .apk ファイル全体を grep すると、10.0.2.2 はもう見つかりません - それでも動作は同じです。
何が起こっているのか、何をすべきかについてのアイデアはありますか?