Не удалось получить абсолютный путь к установленному модулю
У меня проблема с тем, что я считаю, что это связано с моим пакетом. 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": {}
}
}
}
Спасибо!
Ответы
Ответ 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