Dart错误:错误:当前Dart运行时不支持导入dart:mirrors

6

我目前正在使用Flutter编写一些移动应用程序的代码。 我尝试使用gcloud库dart将数据发布/订阅到GCP Cloud Pub / Sub。这是main.dart的代码:

import 'dart:io';
import 'package:googleapis_auth/auth_io.dart' as auth;
import 'package:http/http.dart' as http;
import 'package:gcloud/db.dart';
import 'package:gcloud/storage.dart';


import 'package:gcloud/pubsub.dart';
import 'package:gcloud/service_scope.dart' as ss;
import 'package:gcloud/src/datastore_impl.dart' as datastore_impl;

Future<int> main() async {

  // Read the service account credentials from the file.
var jsonCredentials = new File('path/file.json').readAsStringSync();
var credentials = new auth.ServiceAccountCredentials.fromJson(jsonCredentials);

// Get an HTTP authenticated client using the service account credentials.
var scopes = []    
    ..addAll(PubSub.SCOPES);
var client = await auth.clientViaServiceAccount(credentials, scopes);


// Instantiate objects to access Cloud Datastore, Cloud Storage
// and Cloud Pub/Sub APIs.
var pubsub = new PubSub(client, 'project-name');
ss.fork(() {
  // register the services in the new service scope.
  registerPubSubService(pubsub);

  // Run application using these services.
});

var topic = await pubsub.createTopic('flutter');
await topic.publishString('coba publish dr flutter');

var subscription =
    await pubsub.createSubscription('sub_flutter', 'flutter');
var pullEvent = await subscription.pull();
print(pullEvent.message.asString);
await pullEvent.acknowledge();

  return 0;
}

以下是 pubspec.yaml 文件中的依赖项:
dependencies:
  flutter:
    sdk: flutter

  googleapis: ^0.54.0
  googleapis_beta: ^0.49.0
  googleapis_auth: ^0.2.10
  gcloud: ^0.6.3

在尝试调试代码时,我遇到以下错误:

Launching lib\main.dart on vivo 1918 in debug mode...
Built build\app\outputs\apk\debug\app-debug.apk.
E/flutter (20586): [ERROR:flutter/shell/common/shell.cc(178)] Dart Error: error: import of dart:mirrors is not supported in the current Dart runtime
E/flutter (20586): [ERROR:flutter/shell/common/engine.cc(188)] Could not prepare to run the isolate.
E/flutter (20586): [ERROR:flutter/shell/common/engine.cc(127)] Engine not prepare and launch isolate.
E/flutter (20586): [ERROR:flutter/shell/common/shell.cc(407)] Could not launch engine with configuration.

1
Flutter不支持Dart镜像。 - Mattia
你有什么建议,如何在Flutter中使用Cloud Pub/Sub进行发布/订阅? - Shinogami
8个回答

38
在我的项目中,我在Dart文件中同时导入了“package:json_annotation/json_annotation.dart”和“package:json_serializable/json_serializable.dart”。移除“json_serializable”包可以解决上述错误。

真是救命稻草啊!!!我花了将近两个小时都不知道原因。 - Majed DH
1
在我的情况下,它是“package:json_serializable/builder.dart”。谢谢! - judehall
@NBM是一个真正的救星。 - Emmanuel Njorodongo
你真的救了我的命!谢谢。 - Unrillaz Ti'bob

4

在你的项目中进行全局搜索 json_serializable .dart(ctrl+shift+f)。如果发现任何未使用或不必要导入的导入import 'package:json_serializable/json_serializable.dart',请删除导入并重新运行该项目。 希望这可以帮助你!


2

我为此提出了一个问题:https://github.com/dart-lang/gcloud/issues/84 - Dhaval Kansara

1
这种方法解决了我的错误:
dev_dependencies:
 build_runner: ^1.0.0
 json_serializable: ^3.2.0

 flutter_test:
  sdk: flutter

实际上,我将json_serializable依赖项放在flutter dev_dependencies的顶部,这对我有用。


0

这个错误发生在你的Flutter项目中的某个包使用了dart:mirrors

如果你有任何导入,例如从utils.dart中包含了dart:mirrors,那么就会出现这个错误。

Dart包括dart:mirrors,它提供类型反射。但由于Flutter应用程序已经预编译用于生产,而二进制大小始终是移动应用程序的一个问题,因此该库对Flutter应用程序不可用。 (https://docs.flutter.dev/resources/faq#does-flutter-come-with-a-reflection--mirrors-system)

当我面对这个问题时,我遇到这个错误的原因是导入了以下包:package:auto_route_generator/utils.dart


在我的情况下,原因是相同的。但我需要使用package:auto_route_generator/utils.dart导入。你实施了什么解决方案? - V Nikoyan

0
我正在创建自己的代码生成工具,在运行测试时遇到了以下错误:Dart Error: error: import of dart:mirrors is not supported in the current Dart runtime 在我的情况下,这个错误是因为Flutter不允许使用Dart的镜像(用于“树摇”),并且我忘记从pubspec.yaml中删除flutter依赖项。
dependencies:
  flutter: # <-----------  remove this line
    sdk: flutter # <----------- remove this line

  meta: ^1.7.0
  analyzer: ^4.7.0
  build: ^2.3.1
  source_gen: ^1.2.5

0

我添加了新的包"class_to_map"。 然后我得到了一个错误:"Error: error: import of dart:mirrors is not supported in the current Dart runtime"。 你需要移除最后一个包。


0
对我来说,我正在创建自己的代码生成器,每次尝试运行测试时都会出现此错误。
我尝试使用flutter test运行它们,但我需要改用flutter pub run build_runner test
顺便提一下,请确保将所有内容替换为: import 'package:flutter_test/flutter_test.dart; 改为: import 'package:test/test.dart';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接