DevMode 不会编译为 JavaScript,但仍然必须遵守延迟绑定规则,并且其中许多是基于user.agent
属性的,因此必须正确设置。
user.agent
属性值由在所谓的选择脚本(文件)中生成的一些脚本片段确定,该*.nocache.js
脚本的内容可以取决于set-property
您在 GWT 模块中拥有的 s。
例如,如果您使用 编译 GWT 模块<set-property name="user.agent" value="gecko1_8" />
,则该user.agent
属性将被硬编码gecko1_8
为*.nocache.js
.
如果您稍后运行 DevMode,除非它认为必须覆盖现有的*.nocache.js
,否则它将使用它;*.nocache.js
因此,仅在生成时使用 Chrome 运行应用程序gecko1_8
将导致类似于以下内容的错误:
com.google.gwt.core.client.JavaScriptException: (TypeError): Property 'user.agent' of object is not a function
如果您为多个浏览器编译,但随后只使用一个模块运行 DevMode ,那么gecko1_8
DevMode 将使用在一个从模块确定(这里硬编码到),然后会警告您它们不匹配(因此您的应用程序可能会出现功能障碍:例如,代码将使用,而应该在 Chrome 中使用)。*.nocache.js
safari
gecko1_8
DOMImplMozilla
DOMImplSafari
因此,要解决此问题,要么删除*.nocache.js
文件,以便 DevMode 必须生成一个新文件,要么使用其user.agent
值与您将在 DevMode 中使用的浏览器匹配的模块重新编译您的应用程序。