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 文件的主要内容,如果未能解决你的问题,请参考以下文章
Netbeans Cordova PushPlugin 无法在 iOS 上运行