簡體   English   中英

dart vm有效,但dart2js失敗

[英]dart vm works but dart2js fails

我在做聚合物飛鏢。 dart vm一切正常,但是當我嘗試部署dart vm時,它會失敗(編譯是可以的。)當我運行內置的js版本時。 它給了我錯誤

未捕獲的TypeError:無法調用null的方法“ shL”

我試圖跟蹤已編譯的js代碼,這似乎是由於查詢了文檔中尚未存在的元素(它在html文件中,但是當時只加載了文檔的頭)。編譯版本,很難追蹤哪一部分出錯了。 此外,dart vm和dart2js也沒有錯誤。

有誰知道為什么會這樣,還是我做錯了什么?

PS。 我認為,要使dart更加流行,至少dart2js編譯器必須與js版本中在vm上代碼運行正常的情況一樣穩定。 讓開發人員嘗試對已編譯的js代碼進行調試確實很煩人。 謝謝,易

== ==更新

這是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>

通常,此問題是由於聚合物表達式訪問屬性而引起的,而這些屬性由於pub build的樹狀搖晃而丟失。 搖樹保留了在某處引用的所有代碼,但尚未考慮使用聚合物表達式。 如果在運行帶有選項debug pub build --mode=debug build時項目能夠正常工作,則很可能是原因所在。

如果刪除的字段/方法在您控制的代碼中,則可以通過添加@reflectable@observable@published批注之一來解決此問題。 如果它s third party code (SDK or some 3rd-party library) you can import 'dart:mirrors' and annotate it with @MirrorsUsed(options)` s third party code (SDK or some 3rd-party library) you can import 'dart:mirrors' and annotate it with其中選項列出了成員搖樹應保留的位置。

我發現原始代碼中有兩個問題。 1.在加載正文之前,我不應該加載主腳本,我認為這在dart頁面中的某些示例代碼中也是錯誤的。 2.我認為initPolymer()不會同步初始化元素。 因此,如果我在initPolymer之后立即調用該元素的方法,它將無法找到該方法。

我修復了1.但是,我不知道如何解決。2.我嘗試了initPolymer()。run(),它也不起作用。 如果有人知道如何解決,請告訴我。

謝謝,易

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM