【问题标题】:Can't build Cordova iOS project using CLI but can build/run the Xcode project无法使用 CLI 构建 Cordova iOS 项目,但可以构建/运行 Xcode 项目
【发布时间】:2018-09-19 08:55:07
【问题描述】:

对科尔多瓦来说绝对是新人。这些是我已经完成的步骤:

  1. 签出现有项目
  2. 运行cordova build ios

上面会产生这个构建错误:

(node:10242) UnhandledPromiseRejectionWarning: 错误 [ERR_UNHANDLED_ERROR]: 未处理的错误。 (平台“ios”似乎不是有效的 cordova 平台。它缺少 API.js。不支持 ios。)

我已经用谷歌搜索了上述问题的解决方案,普遍的共识似乎是删除然后添加 iOS 平台。

现在有一个问题。查看提交历史记录,我可以看到对 platforms 目录中的文件进行了代码更改,因此我不能直接删除它,或者...

问题 1) 可以吗?

问题 2)platforms 目录中进行代码更改是否正确?因为看起来那些是生成的目录。

问题 3) 为什么当我在platforms/ios 下打开 Xcode 项目时,尽管出现上述 Cordova CLI 错误,我仍能够正常构建/运行它?

【问题讨论】:

  • 我遇到了这个帖子:stackoverflow.com/questions/27929283/…。也许之前的开发者使用了第二种方法?
  • 手动编辑平台文件是不对的。并且一些手动更改可能会使项目无法构建,因此可能与某人所做的手动更改有关。因此,如果您不想冒险删除平台,请继续从 Xcode 构建
  • @jcesarmobile 谢谢。 src/js 下的文件似乎也有几处更改,www 目录中也有相同的更改。他是否有可能在这两个地方手动进行了相同的更改,还是从另一个地方生成了一个?例如,www 中有一个 .js 文件,其中有很多来自 src/js 中的内容以及看起来像是一大堆混淆代码的内容。很抱歉,如果我说错话了,但真的很困惑。
  • www 代码似乎是从 src 文件夹生成的,我想你使用一些构建系统,如 webpack、rollup 或类似的东西,所以你应该在 src 文件夹中工作,然后你应该有一些命令构建 www
  • 谢谢@jcesarmobile。我发现了一个 Gruntfile,它似乎对 src 中的内容进行了 uglify 并将它们写入 www,所以这可能解释了这一点。仍在试图弄清楚这些更改如何转移到platforms/ios,那里有相同的重复。这是一团糟,没有自述文件,这是我与 Cordova 合作的第一天。

标签: ios cordova cordova-cli


【解决方案1】:

手动编辑平台文件是不对的。并且一些手动更改可能会使项目无法构建,因此可能与某人所做的手动更改有关。因此,如果您不想冒险删除平台,请继续从 Xcode 构建

从根wwwplatforms/ios 由cordova 命令传输,例如cordova prepare ioscordova build ioscordova run ios

因此,如果您因为该错误而无法发送cordova prepare ios,您可以尝试一些方法。

  1. 将您的文件从 www 复制到 platforms/ios 而不替换整个文件夹,只替换重复的文件。 cordova prepare ios 不仅仅是一个副本,它还做了一些修改/添加,但如果你不删除现有文件,它可能会起作用。

  2. 创建一个新项目并将platforms/ios/cordova 复制到您自己的项目中,看看是否可以解决上述问题,因为这就是 Api.js 文件所在的位置。

  3. 降级 Cordova CLI,尝试使用最新的 7.x.x,如果不起作用,请尝试使用最新的 6.x.x,其中一个不需要 Api.js,因为它相对较新。

【讨论】:

    猜你喜欢
    • 2014-10-06
    • 1970-01-01
    • 2011-11-29
    • 2015-08-21
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多