我一直在Google地图上使用Dart和AngularDart构建一个Web应用程序。我注意到自进程开始以来出现问题,即使我测试了开发Dart sdk,今天最新的dart sdk(版本1.0.0.10_R30798)仍然面临问题。
首先我使用的软件包是shadow_dom,google_maps和AngularDart。
当我使用--no-minify选项构建我的应用程序时,即使在所有浏览器中使用shadow_dom一周后也是如此(我应该在其他所有内容之前添加shadow_dom脚本以正常工作)。
问题是当我正常构建(缩小)或甚至直接使用带有--minify选项的Dart2JS编译器时,应用程序不会运行并且我得到一个异常。
上面你可以看到两个案例,第一个应用程序正确加载谷歌地图,在第二个图片中没有加载谷歌地图,我得到了那个例外。
更重要的是,如果我使用第三方缩小器来缩小原始的main.dart.js文件(未经宣传的话),它的效果非常好。
谢谢
答案 0 :(得分:1)
google_maps package的 2.x 版本已移除对dart:mirrors的依赖关系,并且仅基于dart:js。因此,缩小问题应该来自代码的另一部分。
此外,我刚刚使用--minify
对the map-simple example进行了测试,结果正常。
答案 1 :(得分:0)
如果受到影响的第三方代码,通常可以使用@MirrorsUsed
注释解决此问题。
使用您自己的代码更容易,只需将@reflectable
添加到受影响的函数/方法/字段,以确保它们被保留。
当名称缩小时,可能很难找到应包含哪些函数/方法/字段。 也许你可以通过查看堆栈跟踪获得一些知识。
缩小通常会删除未在任何地方引用的代码。
在Polymer中,这是因为尚未考虑HTML中的聚合物表达式{{ expr }}
。
如果仅通过反射调用部分代码,则无法识别。
我没有关于角度和缩小的经验
这只是关于通过pub build
进行缩小问题的一般性建议。