Ionic 3在iOS 12上首次启动失败,与plugin_not_installed

问题描述

在iOS 12(至少在同时卡在12上的iPhone 5s和6)上安装后,我的应用首次出现白屏。如果我滑开该应用程序并再次打开它,它将正常运行。我检查了控制台日志,白屏似乎是plugin_not_installed错误

是否可以打开更多日志记录以找出哪个插件在第一次运行时无法加载?

还是我看错地方了?

解决方法

该应用程序仅在首次启动时失败,使我相信已安装了插件,但是在启动过程中,一些插件代码在初始化之前就已执行。

对于初学者来说,我将确保所有与插件相关的代码仅在加载后才执行。您可以通过订阅平台就绪事件并仅在触发后执行插件代码来执行此操作。一个例子是 从“ ionic-angular”导入{Platform};

@Component({...})
export MyApp {
  constructor(public plt: Platform) {
    this.plt.ready().then((readySource) => {
      console.log('Platform ready from',readySource);
      // Platform now ready,execute any required native code
    });
  }
}

此外,登录cordova代码可能对缩小问题范围没有太大帮助。由于您是在iOS上遇到此问题的,因此建议您检查Xcode中的日志,以帮助您调查此错误。

,

通过Safari通过查看JS控制台,我发现缺少哪个插件-这很明显是因为Safari突出显示警告消息的方式。 Ionic使用插件名称记录警告,例如:

Ionic Native:尝试访问SQLite插件,但未安装。

这也应该显示在Xcode的控制台中,但是我没有注意到此日志行-它发生在代码停止工作很长时间之前,但是您应该能够过滤掉该消息的一部分以找到它。

我通过从提供商的构造函数中查找试图使用此插件的代码并将其包装在“ platform.ready()”检查中来解决了这个问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...