Flutter build web构建没有可靠的零安全性,并在错误时运行

0dxa2lsx  于 2022-12-19  发布在  Flutter
关注(0)|答案(3)|浏览(251)

运行flutter build web会出现以下错误:

flutter build web
Changing current working directory to: /home/forest/projects/icell/i_cell_parking_manager

Building without sound null safety
For more information see https://dart.dev/null-safety/unsound-null-safety

Target dart2js failed: Exception: ../../../snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_web-1.0.1/lib/src/interop/utils/utils.dart:15:41:
Error: The argument type 'Object? Function(Object)' can't be assigned to the parameter type 'Object? Function(Object?)?' because 'Object?' is nullable and 'Object' isn't.
 - 'Object' is from 'dart:core'.
  return core_interop.dartify(jsObject, (Object object) {
                                        ^
../../../snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_web-1.0.1/lib/src/interop/utils/utils.dart:39:41:
Error: The argument type 'dynamic Function(Object)' can't be assigned to the parameter type 'Object? Function(Object?)?' because 'Object?' is nullable and 'Object' isn't.
 - 'Object' is from 'dart:core'.
  return core_interop.jsify(dartObject, (Object object) {
                                        ^
Error: Compilation failed.

Compiling lib/main.dart for the Web...                              8.3s
Exception: Failed to compile application for the Web.

为android构建工作没有任何错误(flutter build apk)。
flutter doctor

Flutter 2.0.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 4d7946a68d (10 days ago) • 2021-03-18 17:24:33 -0700
Engine • revision 3459eb2436
Tools • Dart 2.12.2

Running flutter doctor...
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.0.3, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Chrome - develop for the web
[!] Android Studio (not installed)
[✓] IntelliJ IDEA Ultimate Edition (version 2020.2)
[✓] Connected device (2 available)
! Doctor found issues in 1 category.

(The Androd Studio没有安装是相当奇怪的,因为我正在从它运行项目,我使用AVD的虚拟设备没有问题...)
我的index.html导入了最新的库:

...

  <script src="https://www.gstatic.com/firebasejs/7.8.0/firebase-auth.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.20.0/firebase-app.js"></script>

相关pubspec.yaml部件:

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  flutter_spinkit: "^4.1.2"
  cloud_firestore: ^1.0.1
  cloud_functions: "^1.0.2"
  provider: ^5.0.0
  google_sign_in: ^5.0.0
  firebase_core: ^1.0.1
  firebase_messaging: ^9.0.0
  firebase_auth: ^1.0.1
5anewei6

5anewei61#

若要生成不含空安全性的发布版本,请使用用途:

flutter build web --no-sound-null-safety

生成的文件将放置在build/web下。

--no-sound-null-safety必须作为标志传递给web子命令,而不是传递给buildflutter
注意2:构建版本设置<base href="/">,因此除非您从Web服务器根目录提供应用,否则您需要将值调整为正确的路径。有一个github issue可通过命令行参数配置base href。当前文档建议手动设置基本href。* 更新:对应的pull request现在被合并到主分支。

mkh04yzy

mkh04yzy2#

解决方案将运行
flutter pub upgradeflutter pub outdated然后flutter pub get,它解决了问题。
我怀疑有些东西被缓存了,并且在开始构建Web时并没有使用所有新的依赖项,但我不知道为什么它突然起作用了:\

u3r8eeie

u3r8eeie3#

如果您使用的是Mac或Linux,请输入您的终端,以导出此EXTRA_FRONT_END_OPTIONS变量,如下所示

导出EXTRA_FRONT_END_OPTIONS=--无声音零安全

相关问题