簡體   English   中英

編譯飛鏢聚合物時查找錯誤源

[英]Locating source of error when compiling dart polymer

我正在編譯一個用dart和polymer編寫的網站,遇到錯誤(請參閱下面的堆棧跟蹤,時間很長,但不是很有用)。 如堆棧跟蹤所示,當聚合物轉換器嘗試從html導入(在MY_APP.html中)內聯聚合物元素定義時,發生了錯誤。

如果我在MY_APP.html中只有2個自定義元素,我將其中之一注釋掉,看看問題是否仍然存在,問題是我大約有20個,逐一嘗試它們既無聊又費時,任何想法來確定導致問題的自定義元素?

謝謝。

堆棧跟蹤:

... (OMITTED)
Build error:
Transform polymer (ImportInliner) on MY_PACKAGE_NAME|web/MY_APP.html threw error: The null object does not have a method '[]'.

NoSuchMethodError : method not found: '[]'
Receiver: null
Arguments: [1]
dart:core-patch/object_patch.dart 45                                          Object.noSuchMethod
dart:core/uri.dart 124                                                        Uri.Uri._fromMatch
dart:core/uri.dart 121                                                        Uri.parse
http://127.0.0.1:36562/packages/polymer/src/build/import_inliner.dart 177:24  _UrlNormalizer._newUrl
http://127.0.0.1:36562/packages/polymer/src/build/import_inliner.dart 169:41  _UrlNormalizer.visitElement
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 12:50               TreeVisitor.visit
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 24:49               TreeVisitor.visitChildren
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 30:48               TreeVisitor.visitNodeFallback
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 39:50               TreeVisitor.visitElement
http://127.0.0.1:36562/packages/polymer/src/build/import_inliner.dart 173:23  _UrlNormalizer.visitElement
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 12:50               TreeVisitor.visit
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 24:49               TreeVisitor.visitChildren
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 30:48               TreeVisitor.visitNodeFallback
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 39:50               TreeVisitor.visitElement
http://127.0.0.1:36562/packages/polymer/src/build/import_inliner.dart 173:23  _UrlNormalizer.visitElement
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 12:50               TreeVisitor.visit
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 24:49               TreeVisitor.visitChildren
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 30:48               TreeVisitor.visitNodeFallback
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 39:50               TreeVisitor.visitElement
http://127.0.0.1:36562/packages/polymer/src/build/import_inliner.dart 173:23  _UrlNormalizer.visitElement
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 12:50               TreeVisitor.visit
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 24:49               TreeVisitor.visitChildren
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 30:48               TreeVisitor.visitNodeFallback
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 39:50               TreeVisitor.visitElement
http://127.0.0.1:36562/packages/polymer/src/build/import_inliner.dart 173:23  _UrlNormalizer.visitElement
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 12:50               TreeVisitor.visit
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 24:49               TreeVisitor.visitChildren
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 30:48               TreeVisitor.visitNodeFallback
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 39:50               TreeVisitor.visitElement
http://127.0.0.1:36562/packages/polymer/src/build/import_inliner.dart 173:23  _UrlNormalizer.visitElement
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 12:50               TreeVisitor.visit
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 24:49               TreeVisitor.visitChildren
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 30:48               TreeVisitor.visitNodeFallback
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 39:50               TreeVisitor.visitElement
http://127.0.0.1:36562/packages/polymer/src/build/import_inliner.dart 173:23  _UrlNormalizer.visitElement
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 12:50               TreeVisitor.visit
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 24:49               TreeVisitor.visitChildren
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 30:48               TreeVisitor.visitNodeFallback
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 32:52               TreeVisitor.visitDocument
http://127.0.0.1:36562/packages/html5lib/dom_parsing.dart 16:52               TreeVisitor.visit
http://127.0.0.1:36562/packages/polymer/src/build/import_inliner.dart 148:48  ImportInliner._collectImportedDocuments.<fn>.<fn>
dart:async/zone.dart 717                                                      _rootRunUnary
dart:async/zone.dart 854                                                      _RootZone.runUnary
dart:async/future_impl.dart 439                                               _Future._propagateToListeners.handleValueCallback
dart:async/future_impl.dart 522                                               _Future._propagateToListeners
dart:async/future_impl.dart 303                                               _Future._complete
dart:async/future.dart 286                                                    Future.forEach.nextElement
dart:async/zone.dart 717                                                      _rootRunUnary
dart:async/zone.dart 854                                                      _RootZone.runUnary
dart:async/future_impl.dart 439                                               _Future._propagateToListeners.handleValueCallback
dart:async/future_impl.dart 522                                               _Future._propagateToListeners
dart:async/future_impl.dart 303                                               _Future._complete
dart:async/future_impl.dart 354                                               _Future._asyncComplete.<fn>
dart:async/schedule_microtask.dart 23                                         _asyncRunCallbackLoop
dart:async/schedule_microtask.dart 32                                         _asyncRunCallback
dart:isolate-patch/isolate_patch.dart 119                                     _RawReceivePortImpl._handleMessage

../../home/MY_USER_NAME/dart/dart/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart 560  _call.<fn>
dart:isolate                                                                                 _RawReceivePortImpl._handleMessage
... (OMITTED)

錯誤來自具有以下內容的自定義元素:

<a href="/blah/{{observableMap['my_key']}}">blah</a>

將其更改為:

<a href="{{'/blah/' + observableMap['my_key']}}">blah</a>

編譯器很高興。 (這是一個錯誤嗎?)

對於那些有類似問題的人:通過修改common.dart和import_inliner.dart(在Polymer包中)以添加更多日志輸出,我能夠找到有問題的代碼。

我最近沒有看到這樣的錯誤。

我發現的是

相似但不一樣...

我在上一個問題中看到的結果是,您使用了一種不尋常的應用程序布局(我認為)。 文件夾結構很好,但是沒有使用過,也沒有看到過其中元素的HTML文件和Dart文件位於不同文件夾中的結構。

我用

  • 網絡中的index.htmlindex.dart
  • lib中某處的element1.htmlelement1.dart (每個聚合物元素一個html和一個dart文件)。
  • 有時,當一個元素更復雜並且在一些額外的元素中具有某些功能時,我會將所有屬於同一目錄的文件打包在一個子目錄中,例如lib/element1lib/components/element1

上面的鏈接問題是由元素的導入方式引起的,尤其是當一個元素導入另一個元素時。
元素導入仍然非常脆弱。 在Dart / Dartium中,由於存在符號鏈接,因此有數條路徑通向一個元素,但是在構建至JavaScript時,僅支持一種方式。
參見https://code.google.com/p/dart/issues/detail?id=15953
據我所知,改進工作正在進行中。

您組織代碼的方式可能有效,但是我沒有經驗。

暫無
暫無

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

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