2015-03-05 8 views
5

मैं जो developement (http://10.0.2.10:3000) के लिए एक स्थानीय सर्वर पर चलाता है एक उल्का एप्लिकेशन है। ROOT_URL सही ढंग से सेट किया गया है इसलिए __meteor_runtime_config__.ROOT_URL इस यूआरएल के बराबर है। बेशक ऐप 10.0.2.0/24 के भीतर क्लाइंट कंप्यूटर पर ब्राउज़र में पूरी तरह से ठीक काम कर रहा है। ऐप मेरे एंड्रॉइड सेल फोन पर मोबाइल क्रोम/फ़ायरफ़ॉक्स पर भी ठीक काम कर रहा है जो 10.0.2.0/24 का हिस्सा भी है। हालांकि जब मैं इसे meteor run android-device --mobile-server http://10.0.2.10:3000/ के साथ इस सेल फोन पर ऐप के रूप में चलाने की कोशिश करता हूं तो कुछ अजीब होता है:मेटीर/कॉर्डोवा ऐप को 10.0.2.2 से कनेक्ट करने से कैसे रोकें? (और क्यों एप्लिकेशन वहाँ कनेक्ट करता है?)

जब ऐप पहली बार शुरू होता है (या सभी ऐप डेटा साफ़ करने के बाद पहली बार) यह काम करता है (सामग्री कुछ छोटे सेकंड के लिए डीबी से लोड किया जाता है)। फिर ऐप रीलोड और डीबी से किसी भी रिमोट कंटेंट को अब लोड नहीं किया जाता है। जब दूरस्थ सामग्री भरी हुई है इस रिटर्न http://10.0.2.10:3000/ जैसे मैं उम्मीद करेंगे

Meteor.startup(function(){ 
    console.log(__meteor_runtime_config__.ROOT_URL); 
}) 

पहली बार: मैं देखने के लिए जहां उल्का से कनेक्ट करने की कोशिश करता है निम्नलिखित समारोह जोड़ लिया है। दूसरी बार जब रिमोट कंटेंट लोड नहीं होता है तो यह http://10.0.2.2:3000/ देता है।

सवाल अब यह है क्यों उल्का/Cordova यह क्या कर रहा है और मैं इस व्यवहार को कैसे रोक सकते हैं? क्योंकि स्पष्ट रूप से मैं इस तरह से ऐप का परीक्षण नहीं कर सकता। मुझे अभी तक यकीन नहीं है कि यह उत्पादन में काम करेगा जब मेरे पास एफक्यूडीएन और एचटीटीपीएस प्रॉक्सी है लेकिन यह बिंदु से परे है।

मैं 10.0.2.2 मेरी लैन में कुछ नहीं चल रहा है के रूप में पता लगाने की कोशिश और मैं इस आईपी कहीं भी निर्दिष्ट नहीं किया है और /cordova-build/www/application/index.html में यह पाया जो boilerplate_web.cordova.html से उत्पन्न होने लगता है (इस लिंक https://searchcode.com/codesearch/view/91819963/ देखें)। हालांकि उल्का एक फ़ोल्डर cordova-build-override के साथ इन उत्पन्न फ़ाइलों ओवरराइड करने के लिए संभावना प्रदान करता है और इसलिए मैं पूरे

if (/Android/i.test(navigator.userAgent)) { 
    //[...] 
} 

ब्लॉक को दूर करने की थी और एक छोटी console.log('removed') गयी। इसे बुलाया जाता है इसलिए मुझे पता है कि ओवरराइड सफल रहा था और जब मैं पूरी निर्मित .apk फ़ाइल 10.0.2.2 के माध्यम से grep अब और नहीं मिला है - अभी भी व्यवहार वही है।

कोई भी विचार क्या हो रहा है और क्या करना है?

उत्तर

4

तो जब भी आप अपना ROOT_URL सही ढंग से सेट करते हैं तब भी इसके मोबाइल संस्करणों के लिए विशेष चर होते हैं जो सेट नहीं होते हैं और इसमें localhost हो सकते हैं। और वहाँ उल्का परियोजना जो एक मैं उपर्युक्त, जब एक Cordova ग्राहक कनेक्ट हो रहा है से अलग 10.0.2.2 साथ localhost की जगह में अधिक कोड के टुकड़े मौजूद लगते हैं। ऐसा लगता है कि मेरे ऐप को 10.0.2.2 को फिर से कनेक्ट करने का कारण बनता है।

मोबाइल URL वेरिएबल मैं मिल सकता है process.env.MOBILE_ROOT_URL और process.env.MOBILE_DDP_URL हैं। तो Meteor.startup() फ़ंक्शन में अब मैं सर्वर के पक्ष में अपने वास्तविक ROOT_URL पर सेट करता हूं। मेरा एंड्रॉइड (कॉर्डोवा) ऐप अभी भी अपनी पहली स्टार्ट अप के बाद कुछ सेकंड फिर से कनेक्ट कर रहा है लेकिन यह एक ही (और असली) सर्वर यूआरएल से कनेक्ट हो रहा है (इस प्रकार सब कुछ ठीक काम करता है)!

मुझे अभी भी पता नहीं है कि इसकी रीकनेक्टिंग और उन मोबाइल चर और उनके उपयोग को बहुत अच्छी तरह से प्रलेखित नहीं किया गया है (या मुझे कुछ याद आया) लेकिन मैं अब काम करने के तरीके के साथ रह सकता हूं।

+0

क्या यह पोस्ट आपकी समस्या की व्याख्या करता है? विद्रोह उत्तर को देखें: http://stackoverflow.com/questions/34658956/meteorjs- मोबाइल-build-rooturl-is-always-10-0-2-23000-instead-of-the-real-serv/34792259# 34792259 – Rebolon

संबंधित मुद्दे