web-dev-qa-db-fra.com

Impossible d'obtenir le chemin absolu vers le module installé

Je rencontre un problème qui, selon moi, est lié à mon package.json ou à la version de la plate-forme cordova.

Lorsque j'essaie d'exécuter un ionic state restore il renvoie la sortie suivante:

Attempting to restore your Ionic application from package.json

Restoring Platforms

cordova platform add ios
cordova platform add Android

Restore platforms is complete

Restoring Plugins

cordova plugin add cordova-plugin-whitelist
cordova plugin add cordova-plugin-console
cordova plugin add cordova-plugin-statusbar
cordova plugin add cordova-plugin-device
cordova plugin add cordova-plugin-splashscreen
cordova plugin add ionic-plugin-keyboard
cordova plugin add cordova-plugin-network-information
cordova plugin add cordova-plugin-file
cordova plugin add cordova-plugin-compat
cordova plugin add cordova-plugin-media
cordova plugin add https://github.com/AubreyHewes/cordova-background-audio.git
Caught exception:
 undefined

Mind letting us know? https://github.com/driftyco/ionic-cli/issues

Et lorsque j'essaie d'exécuter la commande qui a échoué (cordova plugin add https://github.com/AubreyHewes/cordova-background-audio.git), il renvoie l'erreur suivante:

Error: Failed to fetch plugin git+https://github.com/AubreyHewes/cordova-background-audio.git via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Failed to get absolute path to installed module

Je ne comprends pas pourquoi cela dit que c'est un problème de connexion, car ma connexion Internet fonctionne très bien. L'URL du plugin est également correcte.

Infos sur mon environnement:

Cordova CLI: 7.0.0
Ionic CLI Version: 2.2.3
Ionic App Lib Version: 2.2.1
ios-deploy version: 1.9.0
ios-sim version: 5.0.10
OS: OS X El Capitan
Node Version: v7.0.0
Xcode version: Xcode 8.1 Build version 8B62

J'arrache mes cheveux pour ce problème. Avez-vous une idée de ce qui peut provoquer cela?

Mon contenu package.json:

{
  "name": "paranaiba-app",
  "version": "1.1.1",
  "description": "paranaiba-app: An Ionic project",
  "dependencies": {
    "cordova-Android": "^6.2.3",
    "cordova-ios": "^4.4.0",
    "cordova-plugin-compat": "~1.1.0",
    "cordova-plugin-console": "~1.0.6",
    "cordova-plugin-device": "~1.1.5",
    "cordova-plugin-file": "~4.3.2",
    "cordova-plugin-media": "~2.4.1",
    "cordova-plugin-music-controls": "git+https://github.com/homerours/cordova-music-controls-plugin.git",
    "cordova-plugin-network-information": "~1.3.2",
    "cordova-plugin-splashscreen": "~4.0.2",
    "cordova-plugin-statusbar": "~2.2.2",
    "cordova-plugin-whitelist": "~1.3.2",
    "gulp": "^3.5.6",
    "gulp-concat": "^2.2.0",
    "gulp-minify-css": "^0.3.0",
    "gulp-rename": "^1.2.0",
    "gulp-sass": "^2.0.4",
    "ionic-plugin-keyboard": "~2.2.1",
    "nl.kingsquare.cordova.background-audio": "git+https://github.com/AubreyHewes/cordova-background-audio.git",
    "phonegap-plugin-Push": "~1.8.4"
  },
  "devDependencies": {
    "bower": "^1.3.3",
    "gulp-util": "^2.2.14",
    "shelljs": "^0.3.0"
  },
  "cordovaPlugins": [
    "cordova-plugin-whitelist",
    "cordova-plugin-console",
    "cordova-plugin-statusbar",
    "cordova-plugin-device",
    "cordova-plugin-splashscreen",
    "ionic-plugin-keyboard",
    "cordova-plugin-network-information",
    "cordova-plugin-file",
    "cordova-plugin-compat",
    "cordova-plugin-media",
    {
      "locator": "https://github.com/AubreyHewes/cordova-background-audio.git",
      "id": "nl.kingsquare.cordova.background-audio"
    },
    {
      "locator": "https://github.com/homerours/cordova-music-controls-plugin",
      "id": "cordova-plugin-music-controls"
    }
  ],
  "cordovaPlatforms": [
    {
      "platform": "ios",
      "version": "",
      "locator": "ios"
    },
    {
      "platform": "Android",
      "version": "",
      "locator": "Android"
    }
  ],
  "cordova": {
    "platforms": [
      "Android",
      "ios"
    ],
    "plugins": {
      "phonegap-plugin-Push": {
        "SENDER_ID": "XXXX"
      },
      "cordova-plugin-whitelist": {},
      "cordova-plugin-console": {},
      "cordova-plugin-statusbar": {},
      "cordova-plugin-device": {},
      "cordova-plugin-splashscreen": {},
      "ionic-plugin-keyboard": {},
      "cordova-plugin-network-information": {},
      "cordova-plugin-file": {},
      "cordova-plugin-compat": {},
      "cordova-plugin-media": {},
      "nl.kingsquare.cordova.background-audio": {},
      "cordova-plugin-music-controls": {}
    }
  }
}

Merci!

J'ai reçu le même message d'erreur lors de l'ajout d'un plugin local: Error: Failed to get absolute path to installed module.

Utilisation de l'option --nofetch ([email protected]) l'a corrigé:

cordova plugin add ../my-plugin --nofetch

Selon https://github.com/Apache/cordova-cli/blob/master/RELEASENOTES.md : utilisez --nofetch flag pour récupérer les plateformes et les plugins en utilisant l'ancienne logique de récupération.

77
uutecht

Edit: Cette réponse est obsolète. Veuillez utiliser à la place réponse de uutrecht .


J'ai eu le même problème en ce moment. Je l'ai corrigé en rétrogradant cordova de v7.0.0 à v6.5.0

npm i -g [email protected]

Ils ont changé la façon dont ils récupèrent les plugins. https://cordova.Apache.org/news/2017/05/04/cordova-7.html

12
RafaelKr

Supprimez le plugin, que vous avez installé à partir du local, du config.xml, du package.json et du package-lock.json.

Réessayez ensuite. Je travaille pour la plupart des cas.

{
    "name": "io.cordova.hellocordova",
    "version": "1.0.0",
    "displayName": "HelloCordova",
    "cordova": {
        "platforms": [
            "Android"
        ],
        "plugins": {
            "cordova-plugin-whitelist": {},
            "com-example-plugin": {}
        }
    },
    "dependencies": {
        "cordova-Android": "^6.2.3",
        "cordova-plugin-template": "file:../cordova-testplugin",  // <-- remove this line
        "cordova-plugin-whitelist": "^1.3.2"
    }
}
5
wf9a5m75

--nofetch L'option a été supprimée dans Cordova version 8.0.0: https://issues.Apache.org/jira/browse/CB-13055

Si vous avez déjà installé Cordova 8.x.x, vous pouvez le rétrograder vers la version 7.1.0 puis utiliser le --nofetch option.

Exécutez la commande suivante pour rétrograder Cordova vers 7.1.0:

npm install -g [email protected]

Si la commande ci-dessus ne fonctionne pas, essayez d'abord de désinstaller cordova, puis installez cordova version 7.1.0:

npm uninstall -g cordova
npm install -g [email protected]

Ensuite, vérifiez la version Cordova pour confirmer si elle est déclassée ou non:

cordova --version
5
Mukesh Chapagain

Je l'ai corrigé en exécutant la commande suivante (en utilisant cordova v 8.1.2):

ionic cordova plugin rm PLUGIN_NAME && ionic cordova plugin add PLUGIN_NAME

0

Je pense que le problème est l'id du package.json du plugin différent avec le nom du dépôt git

par exemple: id de package.json => com.abc.cde l'url git doit être https://github.com/ {nom d'utilisateur} /com.abc.cde.git

0
Dun Grady

Cette réponse s'applique à: Cordova 8.1.2 ([email protected])

Dans mon cas, cela avait à voir avec git+https://... Une partie de l'url, répertoriée dans package.json Sous les dépendances. Le changer en https://... A fait l'affaire.

Dans le cordova src, ils utilisent un module cordova-fetch. Dans la fonction getPath l'erreur est levée. Il peut appeler searchDirForTarget qui à son tour appelle le module is-url. La cible, par ex. l'url est validée ici et git+https://... renvoie invalide car il ne correspond pas à /^(?:\w+:)?\/\/(\S+)$/.

0
Erik