2017-05-08 82 views
20

我遇到了一個問題,我認爲這與我的package.json或cordova平臺的版本有關。未能獲得已安裝模塊的絕對路徑

當我試圖運行一個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 

我拉我的頭髮了這個問題。你有什麼可能導致這種線索?

我的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": {} 
    } 
    } 
} 

謝謝!

+0

您是否可以在純科爾多瓦應用程序中添加此插件以檢查此cordova的問題還是您的應用程序? cordova-7.0中的提取邏輯發生了一些變化,可能會影響您的應用程序。 – Bob

+0

@Bob現在就試用了,工作得很好:'將「nl.kingsquare.cordova.background-audio」的插件信息保存到config.xml中。謝謝你的時間! –

+2

嘗試在離子應用程序中手動從node_modules中刪除此插件並再次安裝此插件, – Bob

回答

64

添加本地插件時收到了相同的錯誤消息: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標誌來獲取使用舊取邏輯平臺和插件。

+5

這應該是被接受的答案。接受答案中的鏈接甚至提到了這個標誌。 –

+3

'--nofetch'標誌是否保存爲'package.json' - 它不會出現在我的面前,因此,在新克隆上運行'cordova prepare'會產生相同的錯誤。 – keldar

11

編輯:此答案已過時。請改用answer of uutrecht


我現在有同樣的問題。我固定它通過從7.0.0降級科爾多瓦V6.5.0

sudo npm i -g [email protected]

他們改變了他們是如何獲取插件的方式。 https://cordova.apache.org/news/2017/05/04/cordova-7.html

+0

我想我會這麼做。每次我想恢復項目的狀態時,都必須手動刪除所有node_modules。感謝您的建議! –

+0

我該如何降級cordova版本? –

+0

看看我提到的命令'sudo npm i -g cordova @ X.X.X' 用你想使用的版本替換'X.X.X'。 – RafaelKr

-1

刪除從local,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" 
    } 
}