2010-04-14 9 views
6

Ho un'applicazione di Google Web Toolkit che sto distribuendo a Google App Engine. Nell'applicazione distribuita, viene visualizzato un errore JavaScript Uncaught TypeError: Cannot read property 'f' of null. Sembra l'equivalente JavaScript di una NullPointerException Java.Debug di un'applicazione di Google Web Toolkit che presenta un errore durante la distribuzione su Google App Engine

Il problema è che il GWT JavaScript è offuscato, quindi è impossibile eseguire il debug nel browser e non riesco a riprodurre lo stesso problema in modalità host in cui è possibile utilizzare il debugger Java. Penso che il motivo per cui vedo solo l'errore dell'applicazione distribuita è che il database che sto usando sul server GAE sta attivando qualcosa di diverso dal database di test che sto usando durante i test e lo sviluppo.

Quindi, qualche idea sul modo migliore di procedere? Ho pensato alle seguenti cose:

  • Distribuire una versione non ridotta della mia applicazione. Nonostante molti dati su Google, non riesco a capire come farlo utilizzando lo script di distribuzione automatico fornito con il plug-in Eclipse di Google. Qualcuno sa?
  • Scaricare e copiare i dati GAE sul server locale
  • In qualche modo, indicare il codice di sviluppo per utilizzare il server GAE per i dati anziché il database di test locale. Questa sembra l'idea migliore ...

Qualcuno può suggerire come procedere qui?

Infine, c'è un modo per intercettare questi errori JavaScript sul server di produzione e registrarli da qualche parte? Senza la registrazione, non dovrò comunque sapere se i miei utenti hanno errori che non si verificano sul server. La funzione GWT.log() viene automaticamente eliminata dal codice di produzione ...

risposta

3

1) Se è possibile replicare localmente lo stato necessario del proprio database GAE, quindi eseguire la versione compilata di JavaScript sul computer locale. Questo quasi certamente darà lo stesso errore, ma è molto meno costoso di una distribuzione completa di AppEngine. Fatelo compilando la vostra app con il compilatore GWT, quindi avvialo normalmente, quindi indirizzate il browser all'indirizzo specificato senza la parte ?gwt.codesvr=127.0.0.1:9997.

2) Utilizzare il -style PRETTY o -style DETAILED con il compilatore GWT per ottenere un javascript migliore. Se compili localmente con questo flag una volta, quindi la distribuzione in AppEngine (con il plugin Eclipse) invierà la stessa versione non-offuscata.

3) Strumentare il codice (Window.alert() funziona correttamente) per capire esattamente dove si verifica l'errore. Questo è particolarmente utile per trovare dove l'esecuzione di javascript devia dall'esecuzione in modalità host.

4) Accelerare il processo di compilazione mantenendo solo una permutazione. Ecco come fare qui: How do I speed up the gwt compiler?

5) Gli errori Javascript che non vengono visualizzati nella versione di sviluppo o nei test di unità sono (quasi sempre) dovuti a un bug in GWT, dopo aver esaminato un po ' , vai al forum GWT o al tracker dei problemi per vedere se si tratta di un bug noto e se esiste o meno una soluzione alternativa.

Problemi correlati