[英]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.html
和index.dart
element1.html
和element1.dart
(每個聚合物元素一個html和一個dart文件)。 lib/element1
或lib/components/element1
上面的鏈接問題是由元素的導入方式引起的,尤其是當一個元素導入另一個元素時。
元素導入仍然非常脆弱。 在Dart / Dartium中,由於存在符號鏈接,因此有數條路徑通向一個元素,但是在構建至JavaScript時,僅支持一種方式。
參見https://code.google.com/p/dart/issues/detail?id=15953
據我所知,改進工作正在進行中。
您組織代碼的方式可能有效,但是我沒有經驗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.