未捕获的TypeError:无法调用null
的方法'shL'我试图跟踪已编译的js代码,看起来似乎是因为查询了一个尚未在文档中的元素(它位于html文件中,但不知何故只是在那时加载了文档的头部。) 由于它是编译版本,因此很难追踪哪个部分出错了。此外,dart vm和dart2js也没有错误。
有谁知道为什么会这样,或者我做错了什么?
PS。我认为让dart更受欢迎,至少dart2js编译器必须像在js版本中代码在vm上正常运行时一样稳定。让开发人员尝试调试已编译的js代码真的很烦人。 谢谢, 易
== UPDATE ==
这是html文件(在构建之前)
<html>
<head>
<meta charset="utf-8">
<title>Sample app</title>
<link rel="stylesheet" href="myHtml.css">
<link rel="import" href="template/my-element.html">
<script type="application/dart">export 'main.dart';</script>
<script src="packages/browser/dart.js"></script>
</head>
<body>
<my-element id="myElement" class="myElement" numOfRow="3"></my-element>
</body>
</html>
答案 0 :(得分:1)
通常这个问题是由聚合物表达式访问由pub build
树抖动丢弃的属性引起的。
树抖动保留了所有引用的代码,但聚合物表达式尚未考虑。
如果您使用选项debug pub build --mode=debug
运行构建时项目正常工作,那很可能是因为这是原因。
如果删除的字段/方法位于您控制的代码中,则只需添加其中一个注释@reflectable
,@observable
或@published
即可解决此问题。
如果s third party code (SDK or some 3rd-party library) you can import 'dart:mirrors' and annotate it with
@ MirrorsUsed(options)`选项列出成员树抖动应该保留。
答案 1 :(得分:0)
我发现原始代码中存在两个问题。 1.我不应该在加载主体之前加载主脚本,我认为它在dart页面的一些示例代码中也是错误的。 2.我认为initPolymer()不会同步初始化元素。因此,如果我在initPolymer之后调用元素的方法,则无法找到该方法。
我修复了1.但是,我不知道如何修复2.我尝试了initPolymer()。run(),它也不起作用。如果有人知道如何解决,请告诉我。
谢谢, 易