2010-04-14 3 views
6

Google App Engine에 배포 할 Google Web Toolkit 응용 프로그램이 있습니다. 배포 된 응용 프로그램에서 JavaScript 오류 Uncaught TypeError: Cannot read property 'f' of null이 발생합니다. 이것은 Java NullPointerException과 같은 자바 스크립트처럼 들립니다.Google App Engine에 배포 할 때 오류가있는 Google Web Toolkit 응용 프로그램 디버깅

문제는 GWT JavaScript가 난독 화되어 브라우저에서 디버그하는 것이 불가능하며 자바 디버거를 사용할 수있는 호스트 모드에서 동일한 문제를 재현 할 수 없다는 것입니다. 배포 된 응용 프로그램에서만 오류가 표시되는 이유는 GAE 서버에서 사용하는 데이터베이스가 테스트 및 개발 중에 사용하는 테스트 데이터베이스와 다른 방식으로 트리거된다는 것입니다.

그래서, 진행하는 가장 좋은 방법에 대한 아이디어가 있습니까? 나는 다음과 같은 것을 생각해 보았다 :

  • 내 응용 프로그램의 obsfucated 버전을 배포하십시오. 많은 Google 검색 기능에도 불구하고 Google Eclipse Plugin과 함께 제공되는 자동 배포 스크립트를 사용하여이를 수행하는 방법을 알 수 없습니다. 아는 사람 있나요?
  • 내 GAE 데이터를 로컬 서버에 다운로드하여 복사하십시오.
  • 로컬 테스트 데이터베이스 대신 데이터 용으로 GAE 서버를 사용하도록 개발 코드를 지정하십시오. 이것은 최상의 아이디어 인 것 같습니다 ...

아무도 진행 방법을 제안 할 수 있습니까?

마지막으로 프로덕션 서버에서 이러한 JavaScript 오류를 catch하고 어딘가에 기록하는 방법이 있습니까? 로깅 없이는 사용자가 서버에서 발생하지 않는 오류가 발생했는지 여부를 알 수 없습니다. GWT.log() 함수는 프로덕션 코드에서 자동으로 제거됩니다 ...

답변

3

1) GAE 데이터베이스의 필요한 상태를 로컬로 복제 할 수 있으면 로컬 시스템에서 javascript 컴파일 된 버전을 실행하십시오. 이렇게하면 거의 동일한 오류가 발생하지만 전체 AppEngine 배포보다 훨씬 저렴합니다. GWT 컴파일러로 앱을 컴파일 한 다음 정상적으로 시작한 다음 ?gwt.codesvr=127.0.0.1:9997 부분이없는 지정된 주소로 브라우저를 지정하십시오.

2) GWT 컴파일러와 함께 -style PRETTY 또는 -style DETAILED을 사용하면 더 좋은 자바 스크립트를 얻을 수 있습니다. 이 플래그를 사용하여 로컬에서 컴파일하면 Eclipse 플러그인을 사용하여 AppEngine에 배포하면 동일한 버전의 난독 화되지 않은 버전이 전송됩니다.

3) 계측기 코드 (Window.alert())는 오류가 발생한 정확한 위치를 파악합니다. 이것은 javascript 실행이 호스팅 된 모드 실행에서 벗어난 곳을 찾는 데 특히 유용합니다.

4) 순열을 하나만 유지하여 컴파일 프로세스 속도를 높입니다. 이것을 어떻게하는지보십시오 : How do I speed up the gwt compiler?

5) 개발 버전이나 단위 테스트에서 나타나지 않는 Javascript 오류는 (거의 항상) GWT의 버그로 인해 발생합니다. , GWT 포럼 또는 이슈 트래커에 의해 드롭하고 그것이 알려진 버그인지, 해결 방법이 있는지 확인하십시오.

관련 문제