Отладка приложения Google Web Toolkit, в котором произошла ошибка при развертывании в Google App Engine - PullRequest
7 голосов
/ 14 апреля 2010

У меня есть приложение Google Web Toolkit, которое я развертываю в Google App Engine. В развернутом приложении я получаю ошибку JavaScript Uncaught TypeError: Cannot read property 'f' of null. Это похоже на JavaScript-эквивалент Java NullPointerException.

Проблема в том, что JavaScript GWT запутан, поэтому невозможно отладить в браузере, и я не могу воспроизвести ту же проблему в размещенном режиме, где я мог бы использовать отладчик Java. Думаю, причина, по которой я вижу только ошибку развернутого приложения, заключается в том, что база данных, которую я использую на сервере GAE, вызывает нечто иное, чем тестовая база данных, которую я использую во время тестирования и разработки.

Итак, есть идеи о том, как лучше поступить? Я думал о следующих вещах:

  • Разверните неопубликованную версию моего приложения. Несмотря на большое количество Google, я не могу понять, как это сделать, используя скрипт автоматического развертывания, предоставляемый с плагином Google Eclipse. Кто-нибудь знает?
  • Скачать и скопировать мои данные GAE на локальный сервер
  • Каким-то образом укажите моему коду разработки использовать сервер GAE для данных вместо локальной тестовой базы данных. Это кажется лучшей идеей ...

Кто-нибудь может подсказать, как действовать здесь?

Наконец, есть ли способ отловить эти ошибки JavaScript на рабочем сервере и где-то их записать? Без регистрации у меня не будет возможности узнать, есть ли у моих пользователей ошибки, которые не возникают на сервере. Функция GWT.log () автоматически удаляется из рабочего кода ...

1 Ответ

4 голосов
/ 15 апреля 2010

1) Если вы можете реплицировать необходимое состояние вашей базы данных GAE локально, то запустите скомпилированную версию javascript на вашем локальном компьютере. Это почти наверняка приведет к той же ошибке, но намного дешевле, чем полное развертывание AppEngine. Сделайте это, скомпилировав ваше приложение с помощью компилятора GWT, затем запустите его как обычно, затем укажите браузер на указанный адрес без ?gwt.codesvr=127.0.0.1:9997.

2) Используйте -style PRETTY или -style DETAILED с компилятором GWT, чтобы получить более приятный JavaScript. Если вы компилируете локально с этим флагом один раз, то при развертывании в AppEngine (с плагином Eclipse) будет отправлена ​​та же не обфусцированная версия.

3) Настройте свой код (Window.alert() работает нормально), чтобы точно определить, где происходит ошибка. Это особенно полезно, чтобы найти, где выполнение javascript отличается от выполнения в размещенном режиме.

4) Ускорьте процесс компиляции, сохранив только одну перестановку. Посмотрите, как это сделать там: Как ускорить компилятор gwt?

5) Ошибки Javascript, которые не отображаются в версии для разработки или в модульных тестах, (почти всегда) связаны с ошибкой в ​​GWT, после небольшого исследования зайдите на форум GWT или средство отслеживания ошибок и посмотрите, является ли это известной ошибкой и есть ли обходной путь.

...