渡槽数据库生成错误:错误状态:NoSuchMethodError:在null上调用了吸气剂“长度”

时间:2020-06-27 09:10:36

标签: dart generate aqueduct

在系统上: Dart VM版本:“ windows_x64”上的2.9.0-14.0.dev.flutter-2b917f5b6a(是)(星期三6月10日15:46:47 2020 +0000)

运行“ aqueduct db generate”创建00000001_initial.migration.dart可以。 但是,在编辑模型并重新运行“ aqueduct db generate”之后,我得到如下消息。 删除00000001_initial.migration.dart并重新运行后,就可以了。

消息:

-Aqueduct CLI版本:3.3.0 + 1 -渡槽项目版本:3.2.0 ***未捕获的错误 错误状态:NoSuchMethodError:在null上调用了getter'length'。 接收者:null 尝试通话:时长 **** Stacktrace

  • #0 Object.noSuchMethod(dart:core-patch / object_patch.dart:51:5)
  • #1 _ClassMirror.newInstance(dart:mirrors-patch / mirrors_impl.dart:653:44)
  • #2 Executable.instanceOf(data:application / dart:14:813)
  • #3 SchemaBuilderExecutable.execute(data:application / dart:13:873)
  • #4 main(数据:application / dart:9:35)
  • #5 _startIsolate。 (dart:isolate-patch / isolate_patch.dart:297:32)
  • #6 _RawReceivePortImpl._handleMessage(dart:isolate-patch / isolate_patch.dart:168:12)

请帮助我!

4 个答案:

答案 0 :(得分:2)

这是一个错误,并且仍然存在。在存在先前的迁移文件时发生。

只需擦除migrations/00000001_initial.migration.dart,然后aqueduct db generate将按预期工作。

在渡槽4.0.0-b1上测试

p.s。我知道这与问题中给出的解决方案相同,但是我遇到了同样的问题,一开始解决方案还不清楚。

答案 1 :(得分:2)

They actually fixed it

它还不在pub.dev上。

答案 2 :(得分:0)

您可以尝试降级 Dart 版本。

brew tap dart-lang/dart

brew uninstall dart

brew install dart@2.8

它帮助了我。

更新:

这是我的 pubspec.yaml 文件的内容:

name: mysecurename
description: mysecuredescription
version: 0.1.0

environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  aqueduct: ^4.0.0-b1
  analyzer: '>=0.32.0 <0.41.0'
  runtime: ^1.0.0-5
  http: ^0.12.0+4
  mime: ^0.9.6+3

dev_dependencies:
  test: ^1.0.0
  aqueduct_test: ^2.0.0-b1

答案 3 :(得分:0)

使用isolate_executor包(对于aqueduct 3.2.0,dart 2.10.0 on Windows 10),我只是在lib\src\中为Executable类的“instanceOf”函数定义的namedArguments添加了默认值“const {}” isolate_executor.dart 如下: (起源)

U instanceOf<U> (String typeName, {List positionalArguments: const [], Map <Symbol, dynamic> namedArguments, Symbol constructorName}) {...}

(修改):

U instanceOf<U> (String typeName, {List positionalArguments: const [], Map <Symbol, dynamic> namedArguments: const {}, Symbol constructorName}) {...}

它运行良好,包括 dart 2.10.0。 不知道为什么,因为在dart的函数定义中已经有这个默认值声明了。

InstanceMirror newInstance (
       Symbol constructorName, List <dynamic> positionalArguments,
       [Map <Symbol, dynamic> namedArguments = const <Symbol, dynamic> {}]);

如果我错了,请检查并纠正我。

相关问题