Dart 2 异步包预编译错误
Dart 2 async package precompilation error
我正在尝试 运行 使用 webdev
的 Dart 2 SDK 网络应用程序。我终于得到了成功解决的依赖关系,但是现在 pub get
无法预编译 async
包。
我发现这个问题似乎很相关,但他们建议的 pub global run
解决方法不起作用:https://github.com/dart-lang/pub/issues/1932
pubspec.yaml
environment:
sdk: '>=2.0.0-dev.68.0 <3.0.0'
dependencies:
browser_detect: ^1.0.4
dnd: ^1.2.0
firebase: ^0.5.0
gorgon: ^0.14.2
intl: ^0.15.6
jsonx: ^2.0.2
slack: ^1.2.2
stagexl: ^1.3.1+4
xml: ^3.0.0
dev_dependencies:
build_runner: '>=0.8.10 <0.10.0'
build_web_compilers: '>=0.3.6 <0.5.0'
发布获取
Dart VM 版本:"linux_x64"
上的 2.0.0-dev.69.0(未知时间戳)
Resolving dependencies...
Overriding the upper bound Dart SDK constraint to <=2.0.0-dev.69.0 for the following packages:
args, async, browser, browser_detect, coUemoticons, convert, cou_toolkit, edit_distance, firebase, fixnum, glob, gorgon, graphs, http_parser, js, jsonx, libld, logging, meta, petitparser, pub_semver, quiver, quiver_iterables, scproxy, slack, source_span, stack_trace, stagexl, string_scanner, transmit, typed_data, xml
To disable this you can set the PUB_ALLOW_PRERELEASE_SDK system environment variable to `false`, or you can silence this message by setting it to `quiet`.
Got dependencies!
Precompiling executables...
Failed to precompile build_runner:graph_inspector:
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:56:10: Error: The return type of the method 'TypeSafeStream::firstWhere' is dart.async::Future<dynamic>, which does not match the return type of the overridden method (dart.async::Future<#lib1::TypeSafeStream::T>).
Change to a subtype of dart.async::Future<#lib1::TypeSafeStream::T>.
Future firstWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:56:10: Error: The method 'TypeSafeStream::firstWhere' doesn't have the named parameter 'orElse' of overriden method 'Stream::firstWhere'.
Future firstWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:59:10: Error: The return type of the method 'TypeSafeStream::lastWhere' is dart.async::Future<dynamic>, which does not match the return type of the overridden method (dart.async::Future<#lib1::TypeSafeStream::T>).
Change to a subtype of dart.async::Future<#lib1::TypeSafeStream::T>.
Future lastWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:59:10: Error: The method 'TypeSafeStream::lastWhere' doesn't have the named parameter 'orElse' of overriden method 'Stream::lastWhere'.
Future lastWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:62:13: Error: The method 'TypeSafeStream::singleWhere' has fewer named arguments than those of overridden method 'Stream::singleWhere'.
Future<T> singleWhere(bool test(T element)) async =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/restartable_timer.dart:11:7: Error: The non-abstract class 'RestartableTimer' is missing implementations for these members:
'tick'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class RestartableTimer implements Timer {
^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/result/capture_transformer.dart:15:7: Error: The non-abstract class 'CaptureStreamTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class CaptureStreamTransformer<T> implements StreamTransformer<T, Result<T>> {
^^^^^^^^^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/result/release_transformer.dart:12:7: Error: The non-abstract class 'ReleaseStreamTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class ReleaseStreamTransformer<T> implements StreamTransformer<Result<T>, T> {
^^^^^^^^^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/single_subscription_transformer.dart:16:7: Error: The non-abstract class 'SingleSubscriptionTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class SingleSubscriptionTransformer<S, T> implements StreamTransformer<S, T> {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed_stream_transformer.dart:23:7: Error: The non-abstract class '_TypeSafeStreamTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class _TypeSafeStreamTransformer<S, T> implements StreamTransformer<S, T> {
^^^^^^^^^^^^^^^^^^^^^^^^^^
Failed to precompile build_runner:build_runner:
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:56:10: Error: The return type of the method 'TypeSafeStream::firstWhere' is dart.async::Future<dynamic>, which does not match the return type of the overridden method (dart.async::Future<#lib1::TypeSafeStream::T>).
Change to a subtype of dart.async::Future<#lib1::TypeSafeStream::T>.
Future firstWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:56:10: Error: The method 'TypeSafeStream::firstWhere' doesn't have the named parameter 'orElse' of overriden method 'Stream::firstWhere'.
Future firstWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:59:10: Error: The return type of the method 'TypeSafeStream::lastWhere' is dart.async::Future<dynamic>, which does not match the return type of the overridden method (dart.async::Future<#lib1::TypeSafeStream::T>).
Change to a subtype of dart.async::Future<#lib1::TypeSafeStream::T>.
Future lastWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:59:10: Error: The method 'TypeSafeStream::lastWhere' doesn't have the named parameter 'orElse' of overriden method 'Stream::lastWhere'.
Future lastWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:62:13: Error: The method 'TypeSafeStream::singleWhere' has fewer named arguments than those of overridden method 'Stream::singleWhere'.
Future<T> singleWhere(bool test(T element)) async =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/restartable_timer.dart:11:7: Error: The non-abstract class 'RestartableTimer' is missing implementations for these members:
'tick'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class RestartableTimer implements Timer {
^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/result/capture_transformer.dart:15:7: Error: The non-abstract class 'CaptureStreamTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class CaptureStreamTransformer<T> implements StreamTransformer<T, Result<T>> {
^^^^^^^^^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/result/release_transformer.dart:12:7: Error: The non-abstract class 'ReleaseStreamTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class ReleaseStreamTransformer<T> implements StreamTransformer<Result<T>, T> {
^^^^^^^^^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/single_subscription_transformer.dart:16:7: Error: The non-abstract class 'SingleSubscriptionTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class SingleSubscriptionTransformer<S, T> implements StreamTransformer<S, T> {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed_stream_transformer.dart:23:7: Error: The non-abstract class '_TypeSafeStreamTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class _TypeSafeStreamTransformer<S, T> implements StreamTransformer<S, T> {
^^^^^^^^^^^^^^^^^^^^^^^^^^
是我的 pubspec.yaml
做错了什么,还是 async
或其他软件包有问题?这个项目已经运行了大约 4 年,但我无法在 Dart 2 中运行它。感谢任何帮助。
您依赖于几个尚未针对 Dart 2 更新的库。不幸的是,唯一的解决方案是删除这些依赖项或移回 Dart 1 SDK。供参考:
- browser_detect:v 1.0.4 • 更新时间:2016 年 3 月 2 日
- gorgon v 0.14.2 • 更新:2014 年 12 月 6 日
- jsonx v 2.0.2 • 更新时间:2016 年 5 月 19 日
- slack 1.2.2 • 更新时间:2015 年 6 月 6 日 WEB
一般来说,只有在 2018 年某个时间最后更新的库才能在 Dart 2 中运行,而且通常只有最新版本。您可以通过在 pub.dartlang.org
上搜索包名称来检查依赖项的状态
编辑:gorgon 特别依赖旧版本的 async
,我会先删除它
我正在尝试 运行 使用 webdev
的 Dart 2 SDK 网络应用程序。我终于得到了成功解决的依赖关系,但是现在 pub get
无法预编译 async
包。
我发现这个问题似乎很相关,但他们建议的 pub global run
解决方法不起作用:https://github.com/dart-lang/pub/issues/1932
pubspec.yaml
environment:
sdk: '>=2.0.0-dev.68.0 <3.0.0'
dependencies:
browser_detect: ^1.0.4
dnd: ^1.2.0
firebase: ^0.5.0
gorgon: ^0.14.2
intl: ^0.15.6
jsonx: ^2.0.2
slack: ^1.2.2
stagexl: ^1.3.1+4
xml: ^3.0.0
dev_dependencies:
build_runner: '>=0.8.10 <0.10.0'
build_web_compilers: '>=0.3.6 <0.5.0'
发布获取
Dart VM 版本:"linux_x64"
上的 2.0.0-dev.69.0(未知时间戳)Resolving dependencies...
Overriding the upper bound Dart SDK constraint to <=2.0.0-dev.69.0 for the following packages:
args, async, browser, browser_detect, coUemoticons, convert, cou_toolkit, edit_distance, firebase, fixnum, glob, gorgon, graphs, http_parser, js, jsonx, libld, logging, meta, petitparser, pub_semver, quiver, quiver_iterables, scproxy, slack, source_span, stack_trace, stagexl, string_scanner, transmit, typed_data, xml
To disable this you can set the PUB_ALLOW_PRERELEASE_SDK system environment variable to `false`, or you can silence this message by setting it to `quiet`.
Got dependencies!
Precompiling executables...
Failed to precompile build_runner:graph_inspector:
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:56:10: Error: The return type of the method 'TypeSafeStream::firstWhere' is dart.async::Future<dynamic>, which does not match the return type of the overridden method (dart.async::Future<#lib1::TypeSafeStream::T>).
Change to a subtype of dart.async::Future<#lib1::TypeSafeStream::T>.
Future firstWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:56:10: Error: The method 'TypeSafeStream::firstWhere' doesn't have the named parameter 'orElse' of overriden method 'Stream::firstWhere'.
Future firstWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:59:10: Error: The return type of the method 'TypeSafeStream::lastWhere' is dart.async::Future<dynamic>, which does not match the return type of the overridden method (dart.async::Future<#lib1::TypeSafeStream::T>).
Change to a subtype of dart.async::Future<#lib1::TypeSafeStream::T>.
Future lastWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:59:10: Error: The method 'TypeSafeStream::lastWhere' doesn't have the named parameter 'orElse' of overriden method 'Stream::lastWhere'.
Future lastWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:62:13: Error: The method 'TypeSafeStream::singleWhere' has fewer named arguments than those of overridden method 'Stream::singleWhere'.
Future<T> singleWhere(bool test(T element)) async =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/restartable_timer.dart:11:7: Error: The non-abstract class 'RestartableTimer' is missing implementations for these members:
'tick'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class RestartableTimer implements Timer {
^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/result/capture_transformer.dart:15:7: Error: The non-abstract class 'CaptureStreamTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class CaptureStreamTransformer<T> implements StreamTransformer<T, Result<T>> {
^^^^^^^^^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/result/release_transformer.dart:12:7: Error: The non-abstract class 'ReleaseStreamTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class ReleaseStreamTransformer<T> implements StreamTransformer<Result<T>, T> {
^^^^^^^^^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/single_subscription_transformer.dart:16:7: Error: The non-abstract class 'SingleSubscriptionTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class SingleSubscriptionTransformer<S, T> implements StreamTransformer<S, T> {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed_stream_transformer.dart:23:7: Error: The non-abstract class '_TypeSafeStreamTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class _TypeSafeStreamTransformer<S, T> implements StreamTransformer<S, T> {
^^^^^^^^^^^^^^^^^^^^^^^^^^
Failed to precompile build_runner:build_runner:
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:56:10: Error: The return type of the method 'TypeSafeStream::firstWhere' is dart.async::Future<dynamic>, which does not match the return type of the overridden method (dart.async::Future<#lib1::TypeSafeStream::T>).
Change to a subtype of dart.async::Future<#lib1::TypeSafeStream::T>.
Future firstWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:56:10: Error: The method 'TypeSafeStream::firstWhere' doesn't have the named parameter 'orElse' of overriden method 'Stream::firstWhere'.
Future firstWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:59:10: Error: The return type of the method 'TypeSafeStream::lastWhere' is dart.async::Future<dynamic>, which does not match the return type of the overridden method (dart.async::Future<#lib1::TypeSafeStream::T>).
Change to a subtype of dart.async::Future<#lib1::TypeSafeStream::T>.
Future lastWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:59:10: Error: The method 'TypeSafeStream::lastWhere' doesn't have the named parameter 'orElse' of overriden method 'Stream::lastWhere'.
Future lastWhere(bool test(T element), {Object defaultValue()}) =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed/stream.dart:62:13: Error: The method 'TypeSafeStream::singleWhere' has fewer named arguments than those of overridden method 'Stream::singleWhere'.
Future<T> singleWhere(bool test(T element)) async =>
^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/restartable_timer.dart:11:7: Error: The non-abstract class 'RestartableTimer' is missing implementations for these members:
'tick'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class RestartableTimer implements Timer {
^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/result/capture_transformer.dart:15:7: Error: The non-abstract class 'CaptureStreamTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class CaptureStreamTransformer<T> implements StreamTransformer<T, Result<T>> {
^^^^^^^^^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/result/release_transformer.dart:12:7: Error: The non-abstract class 'ReleaseStreamTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class ReleaseStreamTransformer<T> implements StreamTransformer<Result<T>, T> {
^^^^^^^^^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/single_subscription_transformer.dart:16:7: Error: The non-abstract class 'SingleSubscriptionTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class SingleSubscriptionTransformer<S, T> implements StreamTransformer<S, T> {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
file:///home/andy/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib/src/typed_stream_transformer.dart:23:7: Error: The non-abstract class '_TypeSafeStreamTransformer' is missing implementations for these members:
'cast'.
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class _TypeSafeStreamTransformer<S, T> implements StreamTransformer<S, T> {
^^^^^^^^^^^^^^^^^^^^^^^^^^
是我的 pubspec.yaml
做错了什么,还是 async
或其他软件包有问题?这个项目已经运行了大约 4 年,但我无法在 Dart 2 中运行它。感谢任何帮助。
您依赖于几个尚未针对 Dart 2 更新的库。不幸的是,唯一的解决方案是删除这些依赖项或移回 Dart 1 SDK。供参考:
- browser_detect:v 1.0.4 • 更新时间:2016 年 3 月 2 日
- gorgon v 0.14.2 • 更新:2014 年 12 月 6 日
- jsonx v 2.0.2 • 更新时间:2016 年 5 月 19 日
- slack 1.2.2 • 更新时间:2015 年 6 月 6 日 WEB
一般来说,只有在 2018 年某个时间最后更新的库才能在 Dart 2 中运行,而且通常只有最新版本。您可以通过在 pub.dartlang.org
上搜索包名称来检查依赖项的状态编辑:gorgon 特别依赖旧版本的 async
,我会先删除它