我花了一天时间试图让我的 GWT 2.6 项目使用 SuperDevMode。我已经到了可以在 Chrome 中启动 SuperDevMode、codeserver 等的地步(也在 Firefox、Linux 和 Windows 中进行了测试),但是似乎没有多少研究足以让我超越我坚持的点:
该站点在作为普通服务器运行时运行良好,(并且它曾经在 Classic Devmode 中运行良好)我有理由相信它从根本上没有任何问题,但是一旦我切换到 SuperDevMode,GWT 模块就不会加载。我只得到静态内容。
首先,我在 Chrome 开发者工具的控制台中发现了一个错误。我得到一个堆栈跟踪,声称无法在未定义的引用上调用我的 ClientFactory 的 getCalendarFactory 方法(但同样,如果没有 SuperDevMode,这不会发生)
Uncaught com.google.web.bindery.event.shared.UmbrellaException: Exception caught: Exception caught: Exception caught: (TypeError) : Cannot read property 'getCalendarFactory' of undefined
SimpleEventBus.java:203
$doFire_0 SimpleEventBus.java:203
$fireEvent_1 SimpleEventBus.java:88
fireEvent_7 SimpleEventBus.java:52
$goTo PlaceController.java:156
$handleHistoryToken PlaceHistoryHandler.java:192
$handleCurrentHistory PlaceHistoryHandler.java:118
$onModuleLoad XXXAppController.java:62init_1 com_00046XXX_00046XXX_00046XXX__EntryMethodHolder.java:3
apply_0 Impl.java:283
entry0 Impl.java:347
(anonymous function) Impl.java:92gwtOnLoad XXX-0.js:46819
(anonymous function) Comparators.java:32
我对此进行了非常努力的研究,但我仍然无法理解堆栈跟踪。几个小时后,我决定从我的 AppController 类中注释掉一行(这是 gwt.xml 中的入口点):
// historyHandler.handleCurrentHistory();
然而,现在当我在 SuperDevMode 中加载页面时,我不再收到异常,除了静态内容、没有错误或 GWT 模块的输出之外,我什么也没有得到,所以 UmbrellaException 消失了,但其他一切都没有真正改变。
任何帮助或指导将不胜感激。