Подтвердить что ты не робот

Не удалось получить абсолютный путь к установленному модулю

У меня проблема с тем, что я считаю, что это связано с моим пакетом. json или версией платформы кордовы.

Когда я пытаюсь запустить ionic state restore, он возвращает следующий вывод:

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

И когда я пытаюсь запустить неудачную команду (cordova plugin add https://github.com/AubreyHewes/cordova-background-audio.git), она возвращает следующую ошибку:

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

Я не понимаю, почему он говорит, что это проблема подключения, потому что мое подключение к Интернету работает нормально. Также URL-адрес плагина тоже прав.

Информация о моей среде:

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

Я вытаскиваю волосы за эту проблему. У вас есть ключ к тому, что может быть причиной этого?

Содержимое моего пакета .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": {}
    }
  }
}

Спасибо!

4b9b3361

Ответ 1

У меня получилось такое же сообщение об ошибке при добавлении локального плагина: Error: Failed to get absolute path to installed module.

Используя опцию --nofetch ([email protected]), она зафиксировала ее:

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

Согласно https://github.com/apache/cordova-cli/blob/master/RELEASENOTES.md: Используйте флаг --nofetch для извлечения платформ и плагинов с использованием старой логики выборки.

Ответ 2

Изменение: Этот ответ устарел. Пожалуйста, используйте ответ uutrecht вместо.


У меня была такая же проблема прямо сейчас. Я исправил это путем понижения Cordova с v7.0.0 до v6.5.0

npm я -g [email protected]

Они изменили способ получения плагинов. https://cordova.apache.org/news/2017/05/04/cordova-7.html

Ответ 3

Удалите плагин, который вы установили из локального, из config.xml, package.json и package-lock.json.

Затем повторите попытку. Я работаю в большинстве случаев.

{
    "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"
    }
}

Ответ 4

--nofetch опция была удалена в Cordova версии 8.0.0: https://issues.apache.org/jira/browse/CB-13055

Если вы уже установили Cordova 8.xx, вы можете понизить его до версии 7.1.0 и затем использовать --nofetch.

Выполните следующую команду, чтобы понизить Cordova до 7.1.0:

npm install -g [email protected]

Если приведенная выше команда не работает, попробуйте сначала удалить Cordova, а затем установить Cordova версии 7.1.0:

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

Затем проверьте версию Cordova, чтобы подтвердить, понизилась ли она:

cordova --version

Ответ 5

Этот ответ относится к: Cordova 8.1.2 ([email protected])

В моем случае это было связано с частью URL git+https://..., указанной в package.json под зависимостями. Изменив его на https://... сделал свое дело.

В Cordova SRC они используют модуль cordova-fetch. В функции getPath ошибка. Это может вызвать searchDirForTarget который, в свою очередь, вызывает модуль is-url. Цель, например, URL, проверяется здесь, и git+https://... возвращает недействительное значение, поскольку оно не соответствует /^(?:\w+:)?\/\/(\S+)$/.

Ответ 6

Я исправил это, выполнив следующую команду (используя cordova v 8.1.2):

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

Ответ 7

Я думаю, что проблема заключается в том, что идентификатор плагина package.json отличается от имени git repo

например: id package.json => com.abc.cde URL-адрес git должен быть https://github.com/ {имя пользователя}/com.abc.cde.git