升级cordova:无法再从git urls安装插件

时间:2015-06-12 10:53:35

标签: cordova phonegap-plugins

我做了一次cordova / phonegap升级,现在我再也无法从git urls安装插件了。任何人都遇到过这样的问题并且已经解决了这个问题吗?

$ cordova plugin add https://github.com/dawsonloudon/VideoPlayer.git
Fetching plugin "https://github.com/dawsonloudon/VideoPlayer.git" via git clone
Repository "https://github.com/dawsonloudon/VideoPlayer.git" checked out to git ref "master".
shell.js: internal error
Error: EXDEV, cross-device link not permitted '/var/folders/xl/bkl76rm570gfsmjspfjgh45h0000gn/T/git/1434106220728/LICENSE'
    at Object.fs.renameSync (fs.js:554:18)
    at /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/src/mv.js:77:8
    at Array.forEach (native)
    at Object._mv (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/src/mv.js:53:11)
    at Object.mv (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/src/common.js:186:23)
    at /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/plugman/util/plugins.js:53:19
    at _fulfilled (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:787:54)
    at self.promiseDispatch.done (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:816:30)
    at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:749:13)
    at /usr/local/lib/node_modules/cordova/node_modules/q/q.js:557:44

版本信息:

$ phonegap -v
5.0.0-0.28.1

$ cordova -v
5.1.1

OSX 10.10.3

编辑: 如果我将我的存储库移动到我的主目录(〜/)。

,它似乎有效

10 个答案:

答案 0 :(得分:26)

我在Windows 7上遇到了与Cordova相同的问题。我不得不回滚到5.0.0(npm install -g cordova@5.0.0)以使其再次运行。

答案 1 :(得分:25)

快速修复是在本地克隆git并从那里提供路径。要使插件开始工作,只需要查看plugin.xml文件

即可

所以cordova plugin add https://github.com/phonegap/phonegap-plugin-fast-canvas.git - 失败,因为

shell.js: internal error Error: EXDEV, cross-device link not permitted '/ - Cordova 5.1.0+中的正常错误。适用于大多数(如果不是全部).git安装

本地克隆:: git clone https://github.com/phonegap/phonegap-plugin-fast-canvas.git

本地安装 cordova plugin add /path/to/phonegap-plugin-fast-canvas

作品。

答案 2 :(得分:4)

此问题已在最新的cordova版本(5.2.0)中修复。

使用npm install -g cordova

升级Cordova

答案 3 :(得分:3)

要扩展此处提供的其他优秀答案,

作为一种临时解决方法,这里有一个单行,它将降级Cordova,安装插件,并升级Cordova:

npm install -g cordova@5.0.0 && cordova plugin add [plugin url] && npm install -g cordova

将需要一些时间来执行,但会消除所有手动repo克隆工作。

答案 4 :(得分:1)

我和你有同样的情况。并且解决这个问题需要将cordova拉回5.0.0

答案 5 :(得分:1)

问题来自node.js fs.rename(),无法通过设备重命名文件。

可能的解决方法是将fs.renameSync()替换为cordova/node_modules/cordova-lib/node_modules/shelljs/src/mv.js

中的其他内容

例如:

var run=require('sync-runner');
...
run("mv '"+src+"' '"+thisDest+"'");

答案 6 :(得分:0)

sudo npm install -g cordova@5.0.0

sudo cordova插件添加https://github.com/litehelpers/Cordova-sqlite-storage.git

答案 7 :(得分:0)

如果项目与您的临时文件夹位于不同的驱动器上,则Cordova 5.1.1有一个错误,可能导致从Git存储库安装的插件失败并显示错误“错误:EXDEV,不允许跨设备链接”。

您可以从npm添加插件。或者,如果您必须添加插件的Git版本,您可以通过将其放入config.xml并在“spec”中指定目录路径来下载副本,解压缩并从文件系统添加插件:{ {3}}

答案 8 :(得分:0)

我遇到了同样的问题,并按照AMilassin的建议(回滚到Cordova 5.0版)解决了问题。我遇到的另一个问题是我的Git安装路径(C:\ Program Files \ Git \ bin)没有添加到环境变量中。一旦我解决了这两个问题,我就能够安装我需要的插件。

答案 9 :(得分:0)

对于与cordova版本7.0.1或更高版本存在相同问题的任何人,请通过在我的项目基目录中包含package.json文件来解决我的问题,并确保package.json文件中的版本为XXX示例1.0.0否则你会得到无效的版本错误。