gpt4 book ai didi

调试在 Google App Engine 上部署时出错的 Google Web Toolkit 应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:59 29 4
gpt4 key购买 nike

我有一个要部署到 Google App Engine 的 Google Web Toolkit 应用程序。在部署的应用程序中,我收到 JavaScript 错误 Uncaught TypeError: Cannot read property 'f' of null。这听起来像是 Java NullPointerException 的 JavaScript 等价物。

问题是 GWT JavaScript 被混淆了,因此无法在浏览器中进行调试,而且我无法在可以使用 Java 调试器的托管模式下重现同样的问题。我认为我只在部署的应用程序上看到错误的原因是我在 GAE 服务器上使用的数据库触发的东西与我在测试和开发期间使用的测试数据库不同。

那么,关于最好的方法有什么想法吗?我想到了以下几点:

  • 部署我的应用程序的非混淆版本。尽管进行了大量谷歌搜索,但我无法弄清楚如何使用 Google Eclipse 插件提供的自动部署脚本来执行此操作。有人知道吗?
  • 下载并复制我的GAE数据到本地服务器
  • 以某种方式让我的开发代码使用 GAE 服务器而不是本地测试数据库来获取数据。这似乎是最好的主意……

谁能建议如何在这里进行?

最后,有没有办法在生产服务器上捕获这些 JavaScript 错误并将它们记录在某个地方?如果没有日志记录,我将无法知道我的用户是否遇到了服务器上不会发生的错误。 GWT.log() 函数自动从生产代码中剥离...

最佳答案

1) 如果您可以在本地复制您的 GAE 数据库所需的状态,则在您的本地计算机上运行 javascript 编译版本。这几乎肯定会产生相同的错误,但比完整的 AppEngine 部署要便宜得多。为此,请使用 GWT 编译器编译您的应用程序,然后正常启动它,然后将您的浏览器指向没有 ?gwt.codesvr=127.0.0.1:9997 部分的指定地址。

2) 在 GWT 编译器中使用 -style PRETTY-style DETAILED 以获得更好的 javascript。如果您使用此标志在本地编译一次,然后部署到 AppEngine(使用 Eclipse 插件)将发送相同的非混淆版本。

3) 检测您的代码(Window.alert() 工作正常)以找出错误发生的确切位置。这对于查找 javascript 执行偏离托管模式执行的位置特别有用。

4) 通过只保留一个排列来加快编译过程。在那里查看如何执行此操作: How do I speed up the gwt compiler?

5) 没有出现在开发版本或单元测试中的 Javascript 错误(几乎总是)是由于 GWT 中的错误,在您稍微调查之后,访问 GWT 论坛或问题跟踪器并查看它是否是已知错误以及是否有解决方法。

关于调试在 Google App Engine 上部署时出错的 Google Web Toolkit 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2640519/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com