Google maps 在google_maps包上使用minify时出现Dart2JS编译器异常

Google maps 在google_maps包上使用minify时出现Dart2JS编译器异常,google-maps,dart,dart2js,angular-dart,Google Maps,Dart,Dart2js,Angular Dart,我一直在用Dart和AngularDart在Google地图上构建一个web应用程序。尽管我测试了开发Dart sdk,并且今天测试了最新的Dart sdk(版本1.0.0.10_R30798),但从过程开始我就注意到了一个问题,并且仍然面临这个问题 首先,我使用的软件包是shadow_dom、google_maps和AngularDart 当我使用--no minify选项构建应用程序时,它工作得很好,即使在所有浏览器中,在摆弄shadow_dom一周后也是如此(为了正常工作,我应该先添加sh

我一直在用Dart和AngularDart在Google地图上构建一个web应用程序。尽管我测试了开发Dart sdk,并且今天测试了最新的Dart sdk(版本1.0.0.10_R30798),但从过程开始我就注意到了一个问题,并且仍然面临这个问题

首先,我使用的软件包是shadow_dom、google_maps和AngularDart

当我使用--no minify选项构建应用程序时,它工作得很好,即使在所有浏览器中,在摆弄shadow_dom一周后也是如此(为了正常工作,我应该先添加shadow_dom脚本)

问题是,当我正常构建(minify)或甚至直接使用带有--minify选项的Dart2JS编译器时,应用程序不会运行,我会得到一个异常

上面您可以看到两种情况,第一种情况下应用程序正确加载谷歌地图,第二种情况下没有加载谷歌地图,我得到了这个例外

更重要的是,如果我使用第三方缩小器来缩小原始的main.dart.js文件(未统一的文件),它工作得非常好


谢谢

如果是受影响的第三方代码,通常可以使用
@MirrorsUsed
注释解决此问题。
使用自己的代码更容易,只需将
@reflectable
添加到受影响的函数/方法/字段,以确保它们被保留

当名称缩小时,可能很难找到应该包含哪些函数/方法/字段。 也许您可以通过查看堆栈跟踪获得一些知识

缩小通常会删除未在任何地方引用的代码。 在Polymer中,这是因为HTML中的Polymer表达式
{{expr}}
尚未被考虑。 如果仅通过反射调用部分代码,则也无法识别

我在角度和缩小方面没有经验。
这只是关于通过
pub build

缩小问题的一般建议,2.x版本的已删除对的依赖,并且仅基于。因此,缩小问题应该来自代码的另一部分


此外,我刚刚用
--minify
进行了测试,它可以正常工作。

您的
谷歌地图
软件包的版本是什么?在我文件夹中的软件包上写着2.0.3。我已经安装了pub,然后升级了pub。很长一段时间,但是有些资源出现了404错误。他们有关系吗?dart应用程序是否需要一些.js文件?没有找到main.dart是因为我在生产中使用的是js代码而不是dart代码。我们将很快发布SDK的新版本(希望在未来几天内)。如果您当时仍然看到这个问题,请在dartbug.com上提交一个bug(最好是原始源代码)。谢谢。是的,但问题是我已经添加了我在@MirrorsUsed targets中使用的谷歌地图包。基本上,我添加了我使用的所有包,以确保它与它们无关。我看到,对于角度包,它被添加到@MirrorsUsed。我不确定这到底是怎么回事。我猜这会通知dart2JS,所有未引用的代码都可以删除,以通过缩小获得更好的结果,因为当生成的代码太大时,通常会提到这一点。要保留默认情况下删除的代码,必须明确提及函数/方法/字段,以便保留它们。如前所述,我对添加包的效果知之甚少。是的,我知道这一点,我已经添加了许多角度包,但似乎还需要更多。我将从添加所有内容开始,然后逐个删除,看看它是如何进行的。谢谢目前,如果有人发现了问题,我会将这些目标作为目标:“angular”、“angular.core”、“angular.core.dom”、“angular.core.parser”、“angular.routing”、“nodetreesanizer”、“angular.filter”、“angular.perf”、“perf_api”、“angular.directive”。嗯,问题是,在映射加载之前只执行了一个HTTPGET请求,正如您所看到的,映射甚至没有显示出来。如果问题出在AngularDart的其他地方,我会更彻底地调试它