Ionic 应用程序使用 Ionic serve 加载但不使用 Xcode

Ionic app loads using Ionic serve but not with Xcode

我目前遇到了与我的 Ionic 项目相关的问题。

我在 GitHub 上有一个 Ionic 项目,我在过去几周一直在做这个项目,我有一些 Cordova 插件作为项目的一部分。

从 GitHub 下载项目时,我可以 运行 使用 Ionic Serve 的应用程序没有问题。但是,当尝试在本地设备上将 xCode 的项目设置为 运行 时,我 运行 出现大量错误

部分包括:

  1. 当运行ning ionic 'cordova platform add ios'出现如下错误

Error: Could not install from "ios" as it does not contain a package.json file.

  1. 当尝试 运行 'ionic cordova run ios -l --external'

Error: Error: terminating with uncaught exception of type NSException

我还没有尝试将我的代码转移到一个新的 Ionic 项目中,因为我想看看我的问题是否可以轻松解决。

在此处查看项目代码:https://github.com/designsheikh/bitsandbobs.git

我明白了。您遇到的问题与我在 android 平台上遇到的问题完全相同。
正如我在评论中指出的那样,它确实是由“损坏的”项目架构引起的。

怎么回事

最初,我对 cordova 生成的资源有疑问,不知何故没有被复制到 android 平台目录中。我用 cordova-res CLI 尝试了很多东西,包括使用 --copy--ios-project 标志强制复制发生在我选择的目录中。

我无法解决我的问题,然后决定回滚我的所有更改并重新开始一个干净的项目来尝试其他的东西。从那以后,我再也无法添加 android 平台了。每次都会抛出以下错误:

Error: Could not install from "android" as it does not contain a package.json file.

说明

通过我的所有测试,我注意到当使用 cordova 添加平台或复制资源时,不知何故,它在错误的目录中创建了 android 平台,在 root,而不是在 platforms 文件夹中。这就是问题的来源。

我无法解释,但是如果您在项目的根目录下有一个具有此平台名称的文件夹时尝试添加带有 cordova 的平台,那么您每次都会遇到此错误。我不知道为什么这会阻止将平台添加到项目中,也许这个文件夹被 CLI 用作 temp 文件夹。

解决方案

修复方法是简单地删除项目 root 中的任何 iosandroid 目录。
错误将消失,您将能够再次添加平台。


@CodingJunkie

关于您在 post 中提供的 Github 存储库,如果您使用 cordova@>=9.0.0.

Using "requireCordovaModule" to load non-cordova module "xcode" is not supported.  
Instead, add this module to your dependencies and use regular "require" to load it.

检查此 issue#1033 以获得解决方法。但是,不建议直接编辑插件源代码,您可能需要寻找另一个 cordova Firebase 插件。

我还注意到您在项目中有点混淆了 cordovacapacitor
确保使用其中之一以避免潜在的错误。

希望对您有所帮助!

@Reqven

感谢您的支持! - 我确信我在尝试解决问题时已经完成了这一步。这是一个如此荒谬的问题,似乎需要遵循您提到的新项目架构。当我在 iIOS 平台上工作时,我按照你的步骤还做了一个小的额外步骤:

  1. 删除 iOS 文件夹
  2. cordova 平台添加 ios
  3. cordova 准备 ios
  4. 离子构建

如果第 2 步抛出错误导致无法找到版本或无法将其集成到项目中 运行 - 包含“@latest”这也解决了我的问题