如何获取 Flutter Web 应用程序的去混淆堆栈跟踪

问题描述 投票:0回答:1

我有一个 flutter Web 应用程序(使用

flutter build web
创建),当我运行它时,我得到以下堆栈跟踪。有没有办法将此堆栈跟踪转换为 dart 文件中的原始行?我注意到有一个 main.dart.js.map 但我不确定这在这里是否有帮助。

我运行我的应用程序

    runZonedGuarded(() async {
      WidgetsFlutterBinding.ensureInitialized();
      FlutterError.onError = (FlutterErrorDetails errorDetails) {
        debugPrint("Flutter error 1 ${errorDetails.exception.toString()}/${errorDetails.stack}");
      };

      runApp(MyApp());
    }, (error, stackTrace) {
      debugPrint("Flutter error 2 ${error.toString()}/$stackTrace");
    });

我看到以下异常。

Flutter error 2 Null check operator used on a null value/TypeError: Cannot read properties of null (reading 'fb')
main.dart.js:45362     at aqp.J (https://.../main.dart.js:122481:8)
main.dart.js:45362     at bk2.$1 (https://.../main.dart.js:75144:3)
main.dart.js:45362     at Object.bpJ (https://.../main.dart.js:7334:19)
...
flutter dart obfuscation
1个回答
0
投票

首先,您是否使用

--source-maps
标志构建应用程序?

其次,错误“对空值使用空检查运算符”与您在源代码中使用

!
运算符指示 en 变量从不为空这一事实相关。

因此,检查应用程序中使用的

!
运算符,其中一个用于 null 变量。

一般来说,在没有进行空检查测试之前不要使用这些 this 运算符。

像这样:

if (myitem != null) {
    var a = myitem!.foo;
}
© www.soinside.com 2019 - 2024. All rights reserved.