空对象没有方法 []=

The null object does not have a method []=

我正在尝试 运行 以下 example 减去 pubspect.yaml 中的一些差异,因为它没有 运行 开箱即用。即反射需要 0.2.0 而不是 0.1.4,如示例 link.

所示

编译一切正常。但是我收到 运行 时间错误。我追踪到以下文件:

https://github.com/dart-lang/polymer-dart/blob/behaviors/lib/init.dart

在第 25 行,我在 Dartium 浏览器中收到以下错误:

The null object does not have a method '[]='.

NoSuchMethodError: method not found: '[]='
Receiver: null
Arguments: ["push", Closure: (List, Iterable) => dynamic]
#0      Object._noSuchMethod (dart:core-patch/object_patch.dart:42)
#1      Object.noSuchMethod (dart:core-patch/object_patch.dart:45)
#2      _setUpListMethods (package:polymer/init.dart:25:14)
#3      initPolymer.<initPolymer_async_body> (package:polymer/init.dart:17:3)
#4      _RootZone.runUnary (dart:async/zone.dart:1204)
#5      _FutureListener.handleValue (dart:async/future_impl.dart:131)
#6      _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:637)
#7      _Future._propagateToListeners (dart:async/future_impl.dart:667)
#8      _Future._completeWithValue (dart:async/future_impl.dart:477)
#9      _Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:528)
#10     _microtaskLoop (dart:async/schedule_microtask.dart:41)
#11     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
#12     _ScheduleImmediateHelper._handleMutation (dart:html:49308)

我的pubspec.yaml

name: myproject
dependencies:
  polymer: ^1.0.0-rc
  web_components: ^0.12.0
  browser: ^0.10.0
  reflectable: ^0.2.0
transformers:
- reflectable:
    entry_points:
    - web/main.dart
environment:
  sdk: ">=1.2.0 <2.0.0"

dependency_overrides:
  polymer:
    git:
      ref: behaviors 
      url: https://github.com/dart-lang/polymer-dart.git
  polymer_interop:
    git:
      ref: 0.2.0-dev
      url: https://github.com/dart-lang/polymer_interop.git

pubspec.lock

# Generated by pub
# See http://pub.dartlang.org/doc/glossary.html#lockfile
packages:
  analyzer:
    description:
      name: analyzer
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.26.4"
  args:
    description:
      name: args
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.13.4+2"
  async:
    description:
      name: async
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.11.0"
  barback:
    description:
      name: barback
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.15.2+8"
  boolean_selector:
    description:
      name: boolean_selector
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.0.2"
  browser:
    description:
      name: browser
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.10.0+2"
  charcode:
    description:
      name: charcode
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.1.0"
  cli_util:
    description:
      name: cli_util
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.0.1+2"
  code_transformers:
    description:
      name: code_transformers
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.2.11"
  collection:
    description:
      name: collection
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.9.0"
  convert:
    description:
      name: convert
      url: "https://pub.dartlang.org"
    source: hosted
    version: "2.0.0"
  crypto:
    description:
      name: crypto
      url: "https://pub.dartlang.org"
    source: hosted
    version: "2.0.1"
  csslib:
    description:
      name: csslib
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.13.2"
  dart_style:
    description:
      name: dart_style
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.2.1"
  glob:
    description:
      name: glob
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.1.3"
  html:
    description:
      name: html
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.12.2+2"
  http_multi_server:
    description:
      name: http_multi_server
      url: "https://pub.dartlang.org"
    source: hosted
    version: "2.0.2"
  http_parser:
    description:
      name: http_parser
      url: "https://pub.dartlang.org"
    source: hosted
    version: "3.0.2"
  initialize:
    description:
      name: initialize
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.6.1+2"
  logging:
    description:
      name: logging
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.11.3"
  matcher:
    description:
      name: matcher
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.12.0+2"
  mime:
    description:
      name: mime
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.9.3"
  package_config:
    description:
      name: package_config
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.1.5"
  path:
    description:
      name: path
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.3.9"
  plugin:
    description:
      name: plugin
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.1.0"
  polymer:
    description:
      ref: behaviors
      resolved-ref: "46be7836f387a8a2868507baf61940e871519986"
      url: "https://github.com/dart-lang/polymer-dart.git"
    source: git
    version: "0.17.0-dev"
  polymer_interop:
    description:
      ref: "0.2.0-dev"
      resolved-ref: cbef534ef5d0839beeeb63f7c25f502df7e79377
      url: "https://github.com/dart-lang/polymer_interop.git"
    source: git
    version: "0.2.0"
  pool:
    description:
      name: pool
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.2.4"
  pub_semver:
    description:
      name: pub_semver
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.3.0"
  reflectable:
    description:
      name: reflectable
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.2.0"
  shelf:
    description:
      name: shelf
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.6.5+2"
  shelf_static:
    description:
      name: shelf_static
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.2.4"
  shelf_web_socket:
    description:
      name: shelf_web_socket
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.2.1"
  source_map_stack_trace:
    description:
      name: source_map_stack_trace
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.0.4"
  source_maps:
    description:
      name: source_maps
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.10.1+1"
  source_span:
    description:
      name: source_span
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.2.3"
  stack_trace:
    description:
      name: stack_trace
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.6.6"
  stream_channel:
    description:
      name: stream_channel
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.5.0"
  string_scanner:
    description:
      name: string_scanner
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.0.0"
  test:
    description:
      name: test
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.12.15+1"
  typed_data:
    description:
      name: typed_data
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.1.3"
  unittest:
    description:
      name: unittest
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.11.6+4"
  utf:
    description:
      name: utf
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.9.0+3"
  watcher:
    description:
      name: watcher
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.9.7+2"
  web_components:
    description:
      name: web_components
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.12.0+4"
  web_socket_channel:
    description:
      name: web_socket_channel
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.0.4"
  when:
    description:
      name: when
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.2.0"
  which:
    description:
      name: which
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.1.3"
  yaml:
    description:
      name: yaml
      url: "https://pub.dartlang.org"
    source: hosted
    version: "2.1.10"
sdk: ">=1.17.0-dev.6.2 <1.20.0"

就我所知。同样,所有其他文件都与该示例相同。

似乎是一个依赖性问题,但我真的不知道从哪里开始做这个例子运行。是否可以修复此错误?我知道 dart-polymer 仍在 RC 中,但我认为这个简单的例子会 运行...

更新 似乎在 polymer/init.dart 中的 setUpListMethods() 上失败,因为 context 变量数组不存在。我创建了一个断点,但在范围内找不到 context。在哪里声明上下文?它仍然闻起来像一个依赖问题。

如果您使用最新的 Polymer 1.0.0-rc.x 版本,您需要添加 polymer 转换器而不是 reflectable 转换器

transformers:
- polymer:
    entry_points:
    - web/index.html

另见 https://github.com/dart-lang/polymer-dart