安装cordova-plugin-inappbrowser时出错:“错误:预期”* /“或[^ *]但”*“找到”

时间:2016-04-11 13:00:56

标签: cordova plugins cordova-plugins cordova-4

运行时

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

3 个答案:

答案 0 :(得分:2)

以下是一些解决问题的方法:



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.json& ios.json这应该是这样的:

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

这里尝试删除项目构建然后再次构建

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

现在测试您的项目,如果没有运气,请尝试以下某些步骤。



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

在你的apps文件夹的基础上运行

    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下载插件,然后将其添加到项目中

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

<强> 5。更新您的项目和cli

尝试使用ios的当前4.1.0,以便在项目文件夹中尝试运行

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

您还可以在cordova-ios

中指定更改项目版本(cordova-androidplatforms/platforms.json)版本

E.I。

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

虽然它是当前版本并且希望免费发布,但我遇到了一个插件问题,我目前正在使用较低版本,所以如果您仍然遇到问题请再次使用版本@4.0.0@3.6.3 您可以使用我在#6

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



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

您也可能遇到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

查看当前正在运行的计算机上运行的cordova版本

cordova --version

了解更多细节

npm info cordova

添加说明:当您添加cordova个插件时,它们是适用于设备而非浏览器的插件,因此请确保通过附加--device在设备上进行测试这样的运行命令 cordova run ios --device

 旧的cli你会使用.语法添加插件即org.apache.cordova.inappbrowser,但现在你不要这样做,所以请确保你使用-&#39;就像你在做什么{ {1}}

更新:我刚看到你的评论,你说它在不同的项目中有效。我对http://www.macincloud.com/了解不多,但看起来您的问题是从初始安装插件时出现的问题,因此请尝试清理或删除并将其添加回来,如步骤1和2中所述

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

当我在过去遇到添加或删除插件的问题时,它总是与损坏的平台插件json文件有关。它们位于app文件夹中名为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": {}
}