4

我在 Chrome 中使用 SuperDevMode,它运行良好,直到 sourcemaps 突然停止在 Chrome 中显示。
CodeServer 抛出以下异常:Multiple fragment 0 sourcemaps found. Too many permutations.

在编译期间它显示:

Compiling 5 permutations
  Compiling permutation 0...
  Source Maps Enabled
  Compiling permutation 1...
  Source Maps Enabled
  Compiling permutation 2...
  Source Maps Enabled
  Compiling permutation 3...
  Source Maps Enabled
  Compiling permutation 4...
  Source Maps Enabled
Compile of permutations succeeded

有任何想法吗?

4

2 回答 2

4

默认情况下,GWT 编译 6 种基本排列,一种用于每种浏览器类别。

  • 火狐,所有版本
  • 所有 Webkit 浏览器(Safari、Chrome、Android 浏览器等)
  • IE6 和 IE7
  • IE8
  • IE9(和 IE10)
  • 歌剧

有一个报告的问题:Issue 7458: Super Dev Mode should not compile 6 permutations when user.agent is missing

问题描述中建议的解决方法:

是限制 gwt.xml 文件中的浏览器排列。例如,如果您使用的是 Chrome 或 Safari:

<set-property name="user.agent" value="safari"/>

此外,如果您使用 Sencha GXT,我还建议您阅读以下文章:使用 GWT 编译器获得更好的构建

根据文章,我还在我的 gwt.xml 中添加了以下行:

<collapse-all-properties />

所以最后我对 SuperDev 模式的配置如下:

<add-linker name="xsiframe"/>
<set-configuration-property name="devModeRedirectEnabled" value="true"/>
<set-property name="compiler.useSourceMaps" value="true" />
<set-property name="user.agent" value="safari"/>
<collapse-all-properties />

结果 GWT 只编译一个排列:

binding: user.agent=safari
binding: compiler.useSourceMaps=true
binding: locale=en
Compiling module com.mycompany.Main
...
Compiling 1 permutation
  Compiling permutation 0...
  Source Maps Enabled
Compile of permutations succeeded
于 2013-07-26T13:32:01.970 回答
2

如果您添加了语言环境但没有en显式添加语言环境和/或没有“删除”default语言环境并且您在浏览器中加载页面之前没有关闭开发模式,则可能会发生这种情况。

例如,在我的模块中,我有:

<extend-property name="locale" values="fr" />
<set-property-fallback name="locale" value="fr"/>

使用此设置,有 2 个语言环境:frdefault(但default不再使用该语言环境,因为我覆盖了回退到fr)。

启动 SuperDevMode 时,它​​编译 2 个排列(可能是因为它强制localetoen但实际上并没有检查模块中是否存在这样的语言环境)。

我之前启动了该应用程序并打开了Dev Mode On,但随后停止并重新启动了 SuperDevMode。当我在Chrome中刷新页面时,因为它仍处于开发模式(状态存储在localStorage一。
单击Dev Mode OnCompile会强制 SuperDevMode 使用浏览器环境中的属性重新编译(locale=fr这里,因为它是后备)。因此,它编译了一个排列,并且源映射再次工作。

在我的具体情况下,我需要一个排列;我所要做的就是添加<set-property name="locale" value="fr"/>.

您必须处于类似的情况。

很抱歉,我能分享的信息就这么多。没有什么权威的。

于 2012-12-11T14:45:09.800 回答