use*_*478 7 debugging gwt google-app-engine google-eclipse-plugin
我有一个Google Web Toolkit应用程序,我正在部署到Google App Engine.在已部署的应用程序中,我收到JavaScript错误Uncaught TypeError: Cannot read property 'f' of null.这听起来像Java等效的Java NullPointerException.
问题是GWT JavaScript被混淆了,因此无法在浏览器中调试,我无法在托管模式下重现相同的问题,我可以使用Java调试器.我认为我只看到已部署应用程序上的错误的原因是我在GAE服务器上使用的数据库触发的内容与我在测试和开发期间使用的测试数据库不同.
那么,关于最佳进展方式的任何想法?我想到了以下几点:
谁能建议如何在这里继续?
最后,有没有办法在生产服务器上捕获这些JavaScript错误并将它们记录到某个地方?如果没有日志记录,我无论如何都不会知道我的用户是否遇到了服务器上没有出现的错误.GWT.log()函数会自动从生产代码中删除...
1) 如果您可以在本地复制 GAE 数据库所需的状态,则在本地计算机上运行 javascript 编译版本。这几乎肯定会产生相同的错误,但比完整的 AppEngine 部署要便宜得多。为此,请使用 GWT 编译器编译您的应用程序,然后正常启动它,然后将浏览器指向不带该?gwt.codesvr=127.0.0.1:9997部分的指定地址。
2) 将-style PRETTYor-style DETAILED与 GWT 编译器一起使用以获得更好的 javascript。如果您使用此标志在本地编译一次,则部署到 AppEngine(使用 Eclipse 插件)将发送相同的非混淆版本。
3)检测您的代码(Window.alert()工作正常)以准确找出错误发生的位置。这对于查找 javascript 执行偏离托管模式执行的位置特别有用。
4) 仅保留一种排列,加快编译过程。请参阅如何执行此操作: How do I speed up the gwt compiler?
5) 在开发版本或单元测试中没有出现的 Javascript 错误(几乎总是)是由于 GWT 中的错误造成的,在您进行了一些调查之后,请访问 GWT 论坛或问题跟踪器,看看是否是这样已知的错误以及是否有解决方法。
| 归档时间: |
|
| 查看次数: |
3252 次 |
| 最近记录: |