Cordova:在 Angular 8 延迟加载实施后,应用程序无法启动,并且在初始屏幕显示白屏后

Posted

技术标签:

【中文标题】Cordova:在 Angular 8 延迟加载实施后,应用程序无法启动,并且在初始屏幕显示白屏后【英文标题】:Cordova: After Angular 8 lazy load implementation, application does not start and after splash screen shows white screen 【发布时间】:2019-06-26 07:10:59 【问题描述】:

设备: - 安卓和模拟器。

详情: - 使用 Cordova 的混合应用程序。 - 在 Web 应用程序中实现 Angular 8 延迟加载。

场景:在为 Web 应用程序实现延迟加载并创建为 android (.apk) 构建的 Cordova 9.0 之后。应用程序安装并打开时显示启动画面,但之后显示白屏并挂起。

在模拟器上调试时出错(在真实设备中的行为相同 也):主线程上的工作太多。

问题:如何在没有 CORDOVA 的情况下实现延迟加载 应用程序崩溃?

【问题讨论】:

【参考方案1】:

我们已通过在创建 .dist 文件后在 index.html 中添加“type=text/javascript”来解决此问题。

由于角度差异加载 runtime.js,polyfill.js 被添加到 indexl.html 文件中,并且它们具有 TYPE=MODULE 但不存在“type=text/javascript”(如果包含它会很有帮助)因此,Web 浏览器在识别 MIME 类型时没有任何问题,但如果我们通过 cordova 使用相同的 .dist 构建 apk 或 ipa,则 Android 本机无法识别 MIME 类型,因此会引发错误。

谢谢。

【讨论】:

以上是关于Cordova:在 Angular 8 延迟加载实施后,应用程序无法启动,并且在初始屏幕显示白屏后的主要内容,如果未能解决你的问题,请参考以下文章

为啥 angular/cordova 应用程序突然重新加载?

Angular 8 - 未加载运行时编译器错误

Angular 8 急切加载模块(包括应用程序模块)不会出现在 chrome 开发工具中

Angular 9 嵌套延迟加载模块,带有嵌套路由器出口

有没有办法在 Angular 中延迟加载组件而不是模块?

Angular:只有在授权的情况下才从服务器加载延迟加载的模块(使用 JWT)