web-dev-qa-db-fra.com

Mise à niveau de Cordova: impossible d'installer des plugins à partir d'URL git

J'ai fait une mise à jour de cordova/phonegap et maintenant je ne peux plus installer de plugins à partir d'URL git. Quelqu'un a-t-il rencontré un tel problème et l'a-t-il déjà résolu?

$ 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

Informations de version:

$ phonegap -v
5.0.0-0.28.1

$ cordova -v
5.1.1

OSX 10.10.3

EDIT: Il semble que cela fonctionne si je déplace mon référentiel dans mon répertoire personnel (~ /).

23
mwager

J'ai eu le même problème avec Cordova sous Windows 7. J'ai dû revenir à la version 5.0.0 (npm install -g [email protected]) pour que cela fonctionne à nouveau.

26
AMilassin

Une solution rapide consiste à cloner le git localement et à fournir le chemin à partir de là. Pour qu'un plug-in puisse fonctionner, il suffit de voir le fichier plugin.xml 

Donc, cordova plugin add https://github.com/phonegap/phonegap-plugin-fast-canvas.git - échoue car 

Shell.js: internal error Error: EXDEV, cross-device link not permitted '/ - erreur normale dans Cordova 5.1.0+. S'applique à la plupart sinon à tous les fichiers d'installation .git

Clone local :: git clone https://github.com/phonegap/phonegap-plugin-fast-canvas.git

Et installation locale cordova plugin add /path/to/phonegap-plugin-fast-canvas

Travaux.

25
Pian0_M4n

Ce problème est résolu dans la dernière version de Cordova (5.2.0).

Mettez à niveau Cordova avec npm install -g cordova

4
Japheth Adhavan

Pour prolonger d'autres bonnes réponses fournies ici,

En guise de solution temporaire, voici un one-liner qui rétrogradera Cordova, installera le plug-in et remettra à niveau Cordova:

npm install -g [email protected] && cordova plugin add [plugin url] && npm install -g cordova

Cela prendra du temps à exécuter, mais éliminera tout le travail de clonage manuel.

3
Ivan Bartsov

Le problème provient de node.js fs.rename() qui ne peut pas renommer les fichiers sur plusieurs périphériques.

Une solution de contournement possible consiste à remplacer fs.renameSync() par quelque chose d'autre dans cordova/node_modules/cordova-lib/node_modules/shelljs/src/mv.js

Par exemple:

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

J'ai eu la même situation avec vous. et résoudre ce problème besoin de tirer le cordova à 5.0.0 

1
hexin
0
Ganesan Murugesan

J'ai eu le même problème et je l'ai résolu en suivant les conseils d'AMilassin (en revenant à Cordova Version 5.0). Un autre problème que j'ai eu était mon chemin d'installation Git (C:\Program Files\Git\bin) n'a pas été ajouté aux variables d'environnement. Une fois les deux problèmes résolus, j'ai pu installer les plugins dont j'avais besoin. 

0
Sundar Ram

Si vous rencontrez le même problème avec cordova version 7.0.1 ou ultérieure, résolvez le mien en incluant un fichier package.json dans le répertoire de base de mon projet et en vous assurant que la version figurant dans le fichier package.json correspond au modèle exemple XXX 1.0.0 obtenir une erreur de version invalide.

0
MrJaid

Cordova 5.1.1 présente un bogue qui peut entraîner l'échec des plug-ins installés à partir d'un dépôt Git avec l'erreur "Erreur: EXDEV, lien entre périphériques non autorisé" si le projet se trouve sur un autre lecteur que votre dossier temporaire. 

Vous pouvez ajouter des plugins à partir de npm. Ou, si vous devez ajouter une version Git du plug-in, vous pouvez au lieu de cela télécharger une copie, la décompresser et l'ajouter à partir du système de fichiers en le plaçant dans le fichier config.xml et en spécifiant le chemin du répertoire dans "spec": https://cordova.Apache.org/docs/fr/latest/config_ref/index.html#plugin

0
Linda Z