为什么.dart和. dart.js文件出现在同一个调用堆栈上?

relj7zay  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(88)

我有一个不稳定的Flutter Web集成测试,我想调试它。我怀疑一些Flutter bug,但没有可重复的例子来报告它。以下是失败的运行:https://github.com/apache/beam/actions/runs/5241188101/jobs/9462953674?pr=27100#step:9:207
其中写道:

══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞═════════════════
The following TypeErrorImpl was thrown running a test:
Unexpected null value.

When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 288:49      throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 606:63  nullCheck
packages/playground_components/src/widgets/tabbed_snippet_editor.dart.js 7242:24  _runReal
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 45:50                <fn>
dart-sdk/lib/async/zone.dart 1407:47                                              _rootRunUnary
dart-sdk/lib/async/zone.dart 1308:19                                              runUnary
dart-sdk/lib/async/future_impl.dart 147:18                                        handleValue
dart-sdk/lib/async/future_impl.dart 784:44                                        handleValueCallback
dart-sdk/lib/async/future_impl.dart 813:13                                        _propagateToListeners
dart-sdk/lib/async/future_impl.dart 575:7                                         [_complete]
dart-sdk/lib/async/future.dart 424:15                                             <fn>
dart-sdk/lib/async/zone.dart 1391:47                                              _rootRun
dart-sdk/lib/async/zone.dart 1301:19                                              run
dart-sdk/lib/async/zone.dart 1209:7                                               runGuarded
dart-sdk/lib/async/zone.dart 1249:23                                              <fn>
dart-sdk/lib/async/zone.dart 1399:13                                              _rootRun
dart-sdk/lib/async/zone.dart 1301:19                                              run
dart-sdk/lib/async/zone.dart 1233:23                                              <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart 48:19           internalCallback

堆栈中唯一的文件是packages/playground_components/src/widgets/tabbed_snippet_editor.dart。它也是唯一一个变成.js的,所以我看不出到底是什么触发了这个错误。这是我从未见过的。根据我的经验,如果浏览器和调试器之间配置错误,Dart异常堆栈要么全部是.dart,要么全部是.dart.js。尽管行号有点偏,但未优化的.dart.js堆栈一直在暗示这个问题,但这次我的85行.dart文件变成了7242行以上,这是另一个错误的迹象。更奇怪的是,我在那个文件中没有不安全的!,所以这个异常可能来自一些更大的内联构造。
在这一点上,我的主要问题是:什么原因导致文件在异常堆栈上显示为.dart.dart.js?有什么我可以做的,使它成为.dart,并看到违规行吗?
子问题是如何从集成测试中看到.dart.js源代码?Chrome没有显示。
我按照文档中为web规定的方式运行集成测试。
令人不快的文件,这很重要:https://github.com/apache/beam/blob/95668013cae00a18418f1bafa08015d7cee05c54/playground/frontend/playground_components/lib/src/widgets/tabbed_snippet_editor.dart

eit6fx6z

eit6fx6z1#

在浏览器中部署Dart应用程序意味着在JavaScript引擎中运行它,因此Dart代码必须首先编译为JavaScript。这是通过dart 2 js工具完成的,该工具本身是用Dart编写的,位于dart-sdk的bin子文件夹中。该工具也很好地集成在 dart 编辑器中。
Official Doc
所以,如果你在web频道中编写一些原生js代码,那就是你拥有的.js文件,但是.dart文件也会被编译为js。
最后一个问题,我不知道如何看到编译后的代码,我也找过Kotlin编译代码,也没有找到。

相关问题