Cordova 8:无法从“ios”安装,因为它不包含 package.json 文件

Posted

技术标签:

【中文标题】Cordova 8:无法从“ios”安装,因为它不包含 package.json 文件【英文标题】:Cordova 8: Could not install from "ios" as it does not contain a package.json file 【发布时间】:2018-10-11 09:55:22 【问题描述】:

我删除了我的 ios 平台并尝试重新添加它,但现在它说有问题,它需要 package.json。

如何修复 ios 平台使其具有 package.json?

使用 cordova-ios@4.5.4 运行 8.1.2(也在 8.0 中尝试过)

$ cordova platform add ios
 Error: npm: Command failed with exit code 1 Error output:
npm ERR! code ENOLOCAL
npm ERR! Could not install from "ios" as it does not contain a package.json file.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/mikenelson/.npm/_logs/2018-10-11T09_47_23_544Z-debug.log
    at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-common/src/superspawn.js:169:23)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:877:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
stderr: 'npm ERR! code ENOLOCAL\nnpm ERR! Could not install from "ios" as it does not contain a package.json file.\n\nnpm ERR! A complete log of this run can be found in:\nnpm ERR!     /Users/mikenelson/.npm/_logs/2018-10-11T09_47_23_544Z-debug.log\n',
code: 1 

更新

8 个月后我又做了同样的事情,但这次我在项目根目录中创建了一个名为“android”的文件夹,只是为了放一些东西。所以我得到了:

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

正如 Luigi Lopez 在 cmets 中指出的那样,问题是您无法在项目根目录中创建名为“ios”或“android”的文件夹。它认为您想从本地文件夹安装平台。

【问题讨论】:

【参考方案1】:

我不确定情况是否相同,但我在 Ionic 4 项目中收到相同的错误,对我有用的是删除项目根目录下的 ios/ 目录并重新运行命令: ionic cordova platform add ios

希望对你有帮助。

【讨论】:

很好发现,似乎是你不能拥有根 ios/ 文件夹的错误。 这会干扰离子 4 + 电容添加 ios 与 npx cap add ios 的方式吗? 我真的不知道。在我的例子中,根 ios 文件夹是由电容器创建的,但由于我不需要使用它,所以我选择删除它。 这里问题的原因不是你只是删除并重新添加平台的错误。这里需要注意的是,您的根目录中不能有任何名为“ios”或“android”的文件夹。 我在从 Ionic 4 + Capacitor 项目切换到 Ionic 4 + Cordova 项目时遇到了这个问题 - 需要删除顶部的 /ios 文件夹之前 运行 cordova prepare ios 【参考方案2】:

我也遇到了同样的问题,好像我们已经为特定平台构建了一个电容器,它会抛出这个错误。对我来说,当我从项目的根目录中删除 android 电容器构建并重试时。它开始为我工作。

【讨论】:

嗨@KBC,因为所有的初始屏幕图像和其他安卓细节都在这个文件夹中。像这样删除它是否理想?【参考方案3】:

我在更新 ionic 后遇到了同样的问题 删除路径

/平台/安卓

ionic cordova platform add android

【讨论】:

【参考方案4】:

所以这让我沮丧了大约一个小时,最后想办法进入项目目录并删除名为“android”的文件夹,然后重新运行命令。它会强制使用所有正确的文件再次安装 android。

【讨论】:

【参考方案5】:

如果在某些时候我用cordova添加电容器,电容器生成的[android|ios]目录会干扰cordova,我建议备份android目录并将其删除。这将解决问题。

zip –r [android|ios].zip [android|ios]
rm -R [android|ios]
ionic cordova platform remove [android|ios]
ionic cordova platform add [android|ios] --save
unzip [android|ios].zip
rm [android|ios].zip #or add in the .gitignore [android|ios].zip

【讨论】:

【参考方案6】:

我遇到了同样的问题,原因是我试图将电子平台添加到科尔多瓦,但是平台文件夹中有一个名为电子的文件夹,正好在根目录上,出于其他目的,我相信存在一些冲突,为此我将此文件夹重命名为 electron2 和 cordova 正常添加平台。

【讨论】:

以上是关于Cordova 8:无法从“ios”安装,因为它不包含 package.json 文件的主要内容,如果未能解决你的问题,请参考以下文章

音频无法在 Cordova iOS 8 中播放

Netbeans Cordova PushPlugin 无法在 iOS 上运行

使用 Cordova 10 的应用内 AJAX 无法在 iOS 中运行

在 IOS 中,它不询问邮件应用程序的选项

Cordova ios 应用程序无法加载设备数据

在 iOS 8.4.1 上使用 Cordova 无法打开链接(和点击)