【问题标题】:Error installing cordova-plugin-inappbrowser: "Error: Expected "*/" or [^*] but "*" found"安装 cordova-plugin-inappbrowser 时出错:“错误:应为“*/”或 [^*] 但找到“*””
【发布时间】:2016-04-11 13:00:56
【问题描述】:

运行时

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

【问题讨论】:

  • 刚刚在 cordova-cli@6.1.0、cordova-ios@4.0.1 中尝试过并且工作正常。你能尝试更新cordova吗?
  • 不幸的是,我使用macincloud.com 构建应用程序,所以我无法更新cordova-cli :( 同样在一个新项目上它安装时没有错误。任何线索错误意味着什么?那确实它检查?
  • @ErayBalkanli 是的,我也试过了。同样的错误也会出现......
  • 你也可以试试:cordova plugin add org.apache.cordova.inappbrowser

标签: cordova plugins cordova-plugins cordova-4


【解决方案1】:

以下是解决问题的几种不同方法:



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


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

如果您的 wifi 连接不佳,有时您可能会收到这些错误/不完整的安装。您可以通过检查文件夹本身以及 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.jsonios.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.测试在新项目中运行 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 的插件,然后将其添加到您的项目中


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

5.更新您的项目和 cli


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

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 或 @ 987654359@ 您可以使用我在 #6 下提供的其他一些有用命令来完成此操作



6.确保您拥有正确的权限


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

运行:

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

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

cordova --version

了解更多详情

npm info cordova

补充说明:
当您添加 cordova 插件时,它们是针对设备而非浏览器的插件,因此请确保您在运行时附加 --device 以在设备上进行测试像这样的命令 cordova run ios --device

旧的 cli 您将使用 . 语法添加插件,即 org.apache.cordova.inappbrowser 现在您不需要,因此请确保您使用 - 就像您在使用 cordova-plugin-inappbrowser 时一样使用 cordova-plugin-inappbrowser

更新:我刚刚阅读了您的评论,您说它适用于不同的项目。我对http://www.macincloud.com/ 不太了解,但您的问题似乎是插件初始安装时出现的问题,因此请尝试清理它或将其删除并重新添加,就像在第 1 步和第 2 步中一样

【讨论】:

  • "另外假设插件在您的新应用程序中工作并且新应用程序使用相同的应用程序名称和包名称(当您运行 cordova create hello com.example.hello "HelloWorld")您还可以只需在新项目中替换您当前的 www/ 并运行它,您应该不会遇到任何问题。” - 这就是我最终所做的并且有效的方法。
  • 好!对不起,我已经登录到我的另一个帐户,刚刚看到你的其他评论。但是,是的,你是对的,有时插件会创建一个plugins/fetch.json,告诉你的ios.json(或android.json)文件是什么告诉你的构建你安装了插件,而不是因为在你的安装就像一个参差不齐的互联网连接,它生成了你在我的 #1 中看到的 json,告诉你的构建你有plugins/cordova-plugin-inappbrowser,而你可能没有或有一个完整的版本。
  • 如果您遇到另一个插件问题,请再次阅读我的答案,因为那里有很多信息。还请记住,您使用cordova plugin addionic plugin add 安装的任何插件都是插件,用于设置它们在实际设备上的交互方式或模拟设置/配置权限以使其在设备操作系统上运行
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

    cordova 插件添加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": {}
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多