Error installing cordova-plugin-inappbrowser: "Error: Expected "*/" or [^*] but "*" found"

Error installing cordova-plugin-inappbrowser: "Error: Expected "*/" or [^*] but "*" found"

当运行

cordova plugin add cordova-plugin-inappbrowser

我总是遇到以下错误:

Fetching plugin "cordova-plugin-inappbrowser@~1.2.0" via npm
Installing "cordova-plugin-inappbrowser" for ios
Failed to install 'cordova-plugin-inappbrowser':undefined
Error: Expected "*/" or [^*] but "*" found.

我发现的许多信息都已经过时了。我有:

corvoda-cli@6.0.0
cordova-ios@4.0.1

@GameScripting,如果插件在新项目上安装没有错误(正如您在评论中提到的那样),那么 npm 缓存或 cordova 版本应该不是问题。

当我过去在添加或删除插件时遇到问题,它总是与损坏的平台插件 json 文件有关。它们位于您的应用程序文件夹中名为 plugins 的文件夹中。每个平台都有自己的。我相信您正在进行 iOS 开发,因此请查看该文件夹中的 ios.json 文件。

首先检查 plugins\ios.json 中的 json 以确保其格式正确(例如,您可以与工作项目进行比较,或查看以下文件)。接下来,如果在任何地方都有对 cordova-plugin-inappbrowser 的引用,请删除该条目,然后重试命令:

cordova plugin add cordova-plugin-inappbrowser

{
    "prepare_queue": {
        "installed": [],
        "uninstalled": []
    },
    "config_munge": {
        "files": {}
    },
    "installed_plugins": {
        "cordova-plugin-device": {
            "PACKAGE_NAME": "<YOUR PACKAGE NAME>"
        },
        "cordova-plugin-splashscreen": {
            "PACKAGE_NAME": "<YOUR PACKAGE NAME>"
        },
        "cordova-plugin-whitelist": {
            "PACKAGE_NAME": "<YOUR PACKAGE NAME>"
        },
        "ionic-plugin-keyboard": {
            "PACKAGE_NAME": "<YOUR PACKAGE NAME>"
        },
        "cordova-plugin-inappbrowser": {
            "PACKAGE_NAME": "<YOUR PACKAGE NAME>"
        }        
    },
    "dependent_plugins": {}
}

您可以通过以下几种不同的方式解决问题:



1。检查是否一切正常生成并清理您的项目。


有时通过记录和查看输出包,您会发现插件安装并不总是可靠的。在某些情况下,一些插件可能无法正确安装(您会在日志中看到 "not defined" 消息,并且可能会看到 undefined 消息)。通常删除和(重新)添加失败的插件可以解决这个问题。另一件可以尝试的事情是在进行构建之前清理项目——iOS 和 Android 分别在 ./platforms/ios/cordova/clean./platforms/android/cordova/clean 中都有可用的清理脚本,这有时会有所帮助 运行 构建之间。

如果您的 wifi 连接不佳,您有时可以安装这些 bad/incomplete。您可以通过检查文件夹本身以及 plugins/fetch.jsonplugins/ios.jsonplugins/android.json 文件来对此进行测试。

您的 plugins/fetch.json 应如下所示:

    "cordova-plugin-inappbrowser": {
    "source": {
        "type": "registry",
        "id": "cordova-plugin-inappbrowser@~1.3.0" //or whatever version
    },
    "is_top_level": true,
    "variables": {}
},

当你 运行 cordova buildcordova prepare 它应该为你项目的每个平台自动生成一个 .json 所以如果你有 android 和 ios 它应该创建一个 android.json & ios.json 并且应该如下所示:

"installed_plugins": {
"cordova-plugin-inappbrowser": {
            "PACKAGE_NAME": "com.example.hello"
        },

在这里尝试删除项目构建然后重新构建它

 rm -rf platforms/ios/build && cordova build ios

现在测试您的项目,如果运气不佳,请尝试以下一些步骤。



2。删除并(重新)添加项目 platformsplugins 文件夹。


在您的应用程序文件夹的基础上 运行

    rm -rf plugins/ && rm -rf platforms/
    cordova plugin add cordova-plugin-inappbrowser
    cordova platform add ios
    cordova run ios

如果没有尝试步骤 3 和 4,现在测试您的项目


3.测试 运行ning cordova plugin add cordova-plugin-inappbrowser 在新项目中是否能正常工作


尝试运行宁:

     cordova create hello com.example.hello "HelloWorld"
     cd hello
     cordova plugin add cordova-plugin-inappbrowser
     cordova platform add ios
     cordova build

如果它正确安装到新项目中,请进入 plugins/ 文件夹,然后将 cordova-plugin-inappbrowser 插件文件夹拖放到您当前项目的 plugins/ 文件夹中,然后再次测试您的项目,如果您仍然有问题,请仔细检查确保 fetch.jsonios.json / android.json 文件正确生成并且它们看起来像 #1 中的内容。

同时假设该插件在您的新应用程序中工作并且新应用程序使用相同的应用程序名称和包名称(当您 运行 cordova create hello com.example.hello "HelloWorld" 时)您也可以简单地替换您当前的 www/ 和 运行 它并且你不应该 运行 进入任何问题。

4。与步骤 #3 类似,下载不使用 cli 的插件,然后将其添加到您的项目中


尝试在此处下载插件的 .zip 文件 https://github.com/apache/cordova-plugin-inappbrowser 并将其添加到您的 plugins 文件夹,然后测试您的项目

5.更新您的项目和 cli


尝试使用当前的 4.1.0 for ios 所以在你的项目文件夹中尝试 运行ning

rm -rf plugins/ && rm -rf platforms/ && cordova platform add ios
cordova platforms update cordova-ios@4.1.0
cordova plugin add cordova-plugin-inappbrowser
cordova run ios --device

您还可以通过在 platforms/platforms.json

中指定来更改项目版本(cordova-ioscordova-android

e.i.

{
    "ios": "4.1.0"
"android": [version number]
}

虽然它是当前版本并且有望免费发行我有 运行 与此有关的插件问题我目前使用的是较低版本,因此如果您仍有问题请重试版本 @4.0.0@3.6.3 您可以使用我在 #6

下提供的其他一些有用命令来执行此操作



6.Make确定你有正确的权限


您也有可能遇到 cordova 权限问题,因此请尝试检查或更改以下位置

运行:

whoami 

要查找您的用户名,请在此处使用该名称:

sudo chown -R [add your username here] /usr/local/lib/node_modules/cordova

sudo chown -R bobsagit /usr/local/lib/node_modules/cordova


sudo chmod -R 777 /Users/[bobsagit]/.config/
sudo chmod -R 777 ./platforms/ios/

和您的项目文件夹,假设它在桌面上并命名为 ExampleProject

sudo chmod -R 777 ~/Desktop/ExampleProject/platforms/ios




其他有用的命令

在您的应用程序根文件夹中,您可以尝试以下一些操作
查看当前项目中的插件

cordova plugins list

查看当前项目的平台版本运行

cordova platform list

 cordova platform version

它会给你下面的输出

Installed platforms: android 3.5.1, ios 3.5.0
Available platforms: amazon-fireos, blackberry10, browser, firefoxos

检查 cordova 应用程序的当前平台版本

cordova platform version ios

更新现有版本

cordova platform update ios

要更改项目版本首先使用您想要的版本全局安装然后将其添加到您的项目

sudo npm install -g cordova-ios@4.1.0
cordova platform add ios@4.1.0 

或更新到指定的特定版本

cordova platform update ios@4.1.0

在您的机器上查看当前 运行ning cordova 版本 运行

cordova --version

了解更多详情运行

npm info cordova

补充说明:
当您添加 cordova 插件时,它们是针对设备而非浏览器的插件,因此请确保您在通过将 --device 附加到您的 运行 命令来设置设备 cordova run ios --device

旧的 cli 你会添加带有 . 语法的插件,即 org.apache.cordova.inappbrowser 现在你没有,所以确保你使用 - 就像你在做 cordova-plugin-inappbrowser

更新: 我刚刚阅读了您的评论,您说它适用于不同的项目。我对 http://www.macincloud.com/ 不太了解,但看起来你的问题是插件初始安装时出现的问题,因此请尝试清理它或删除它,然后像步骤 1 和 2 中那样将其添加回去

更新 node.jsnpm,创建单独的项目安装平台和插件,将您的 www 文件夹粘贴到其中。我也遇到了同样的事情,更新 node.jsnpm 解决了问题。