1

I'm trying to run this following example minus some differences in pubspect.yaml since it doesn't run out of the box. Namely reflections needs to be 0.2.0 instead of 0.1.4 as seen on the example link.

Everything compiles fine. However I get a runtime error. I traced it to the following file:

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

On line 25 I get the following error in the Dartium browser:

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)

My 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"

That's as far as I got. Again, all the other files are identical to that example.

Seems to be a dependency problem but I really don't know where to go from here to make the example run. Is it possible to fix this error? I know dart-polymer is still in RC but I'd think that simple example would run...

Update Seems to fail on setUpListMethods() in polymer/init.dart because context variable array does not exist. I created a breakpoint and context is not found within the scope. Where is context declared? It still smells like a dependency problem.

Tek
  • 2,888
  • 5
  • 45
  • 73
  • Not being a pub expert, but suspect `polymer: ^1.0.0-rc` misses some version number. At least I got every running with `polymer: ^1.0.0-rc.17` For the others I look at `yaml` in the project. https://github.com/dart-lang/polymer-dart/blob/master/pubspec.yaml – Jonas Bojesen Jul 09 '16 at 15:55
  • my projects works ok without the `dependency_overrides` so also a possibility there. – Jonas Bojesen Jul 09 '16 at 16:15
  • @JonasBojesen Ok, I'm able to get further now. However, I can't add `https://pub.dartlang.org/packages/custom_element_apigen` as a dependency. Can you? I'll update my post with the next error – Tek Jul 09 '16 at 17:03
  • Please post what versions of your dependencies were fetched (from pubspec.lock). – Günter Zöchbauer Jul 09 '16 at 17:38
  • @GünterZöchbauer Ok, I've posted my `pubspec.lock` file – Tek Jul 10 '16 at 01:44
  • The `pubspec.lock` contains very old versions (polymer 0.17.0, reflectable 0.2.0). Change the reflectable version constraint (I think `^0.5.0` should work) – Günter Zöchbauer Jul 10 '16 at 04:00

1 Answers1

2

If you use a recent Polymer 1.0.0-rc.x version you need to add the polymer transformer instead of the reflectable transformer

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

See also https://github.com/dart-lang/polymer-dart

Günter Zöchbauer
  • 623,577
  • 216
  • 2,003
  • 1,567
  • The problem is I'm using Symfony2 and there is no `index.html` only twig templates that are not in the scope of the dart `web` folder. – Tek Jul 09 '16 at 17:36
  • 1
    Seems the transformers are strictly necessary when using polymer. In my case this means I can't use frameworks like Symfony because Symfony uses Twig syntax in it's templates which the Dart compiler doesn't recognize which is when Dart refuses to compile. The Twig syntax is specially necessary for managing asset URLs in Symfony. It's unfortunate, it seems the only way to use Dart and server frameworks like Symfony is via REST API calls. – Tek Jul 10 '16 at 12:20