Ho un'app Meteor che gira su un server locale per lo sviluppo (http://10.0.2.10:3000). ROOT_URL
è impostato correttamente, pertanto __meteor_runtime_config__.ROOT_URL
è uguale a questo URL. Ovviamente l'app funziona perfettamente nel browser su un computer client entro 10.0.2.0/24. L'app funziona perfettamente anche su Chrome/Firefox mobile sul mio cellulare Android, anch'esso parte di 10.0.2.0/24. Tuttavia quando provo a eseguirlo come app su questo cellulare con meteor run android-device --mobile-server http://10.0.2.10:3000/
succede qualcosa di strano:Come impedire a un'applicazione Meteor/Cordova di connettersi a 10.0.2.2? (E perché l'app si collega lì?)
Quando l'app si avvia per la prima volta (o la prima volta dopo che ho cancellato tutti i dati dell'app) funziona come dovrebbe (contenuto dal DB è caricato) per pochi secondi. Quindi l'app si ricarica e qualsiasi contenuto remoto dal DB non viene più caricato. Ho aggiunto la seguente funzione per vedere dove Meteor tenta di connettersi a:
Meteor.startup(function(){
console.log(__meteor_runtime_config__.ROOT_URL);
})
La prima volta quando il contenuto viene caricato remoto restituisce http://10.0.2.10:3000/ come mi sarei aspettato. La seconda volta che il contenuto remoto non viene caricato restituisce http://10.0.2.2:3000/.
La domanda ora è, perché Meteor/Cordova sta facendo questo e come posso interrompere questo comportamento? Perché ovviamente non posso testare l'app in questo modo. Non sono ancora sicuro se funzionerebbe in produzione quando ho un proxy FQDN e HTTPS ma questo è oltre il punto.
ho cercato di trovare 10.0.2.2 come nulla nella mia LAN è in esecuzione lì e non ho specificato questo IP ovunque e lo abbiamo trovato in /cordova-build/www/application/index.html
che sembra essere generato da boilerplate_web.cordova.html
(si veda questo link https://searchcode.com/codesearch/view/91819963/). Tuttavia Meteor offre la possibilità di ignorare questi file generati con una cartella cordova-build-override
e così ho fatto rimuovere l'intero
if (/Android/i.test(navigator.userAgent)) {
//[...]
}
blocco e ha aggiunto un breve console.log('removed')
. Questo viene chiamato così so che l'override ha avuto successo e quando non ho trovato l'intero file .apk costruito 10.0.2.2 non viene più trovato - il comportamento è sempre lo stesso.
Qualche idea cosa sta succedendo e cosa fare?
Questo post spiega il tuo problema? guarda la risposta di rebolon: http://stackoverflow.com/questions/34658956/meteorjs-mobile-build-rooturl-is-always-10-0-2-23000-instead-of-the-real-serv/34792259# 34792259 – Rebolon