星期五, 10月 22, 2021

解決 Cordova Plugin add 時發生 EACCES 權限問題

 


【問題描述】

近期遇到一個 Cordova Plugin 的問題,就是在建立 Plugin 元件時,會發生 EACCES 的權限問題。導致 Plugin 安裝失敗,失敗訊息如下:

Error: command failed with exit code EACCES

到網路上找一下解決方案,通常是提到可以執行下列指令,修改相關權限

chmod +x platforms/android/gradlew

此方法雖然可以解決 Cordova plugin 安裝的問題,但是每次要調整 Plugin 時都會需要手動調整。

【解決方案】

基本上,gradlew 是從 Android SDK 中 copy 到 cordova platforms 底下,在此過程會將相關權限資料也寫到 Android 的專案中。在 MAC 中,路徑範例如下:

/Users/{YOUR ACCOUNT}/Library/Android/sdk/tools/templates/gradle/wrapper/gradlew

cordova plugin add 指令執行時,會將該檔案複製到 Android 專案之中,所以直接調整此檔案之權限,可以避免每次都要手動調整之問題。


【參考資料】

1. Error: spawn EACCES cordova plugin add 解決辦法

星期五, 10月 15, 2021

Cordova Plugin Install Failed - cordova-plugin-mfp




最近被問到一個問題,就是在安裝 IBM Mobile Foundation Platform Plugin 時,發生了安裝失敗的錯誤。


錯誤訊息大概長得像下列這樣:


Failed to install 'cordova-plugin-mfp':undefined
Error: Failed to install plug-in for android :
Failed to install plug-in for android :
ReferenceError: hooksConsts is not defined

 

經過判斷,主要是在 cordova plugin 中,有 hooksConsts 的變數,但不知道為什麼卻是未定義的狀態。

因此,可能的原因有兩個:

(1) 目前專案中的 cordova-plugin-mfp 安裝不完整或是檔案有缺漏

(2) 要安裝的 cordova-plugin-mfp 檔案不完整或有缺漏

其中,第 (2) 項如果是透過指令以 npm 自己到網路上下載的,應該是不會發生。

第 (1) 項,則可能因為先前安裝失敗或是任何原因導致自己專案中的 Plugin 檔案有問題所致。


【解決方案】:

移除本地端的 cordova-plugin-mfp

(1) 透過 cordova plugin rm cordova-plugin-mfp 指令,進行移除

(2) 手動移除

  • 到專案中 plugins 資料夾
  • 刪除 cordova-plugin-mfp 資料夾
  • 修改 fetch.json、ios.json 及 android.json 移除 cordova-plugin-mfp 資訊 


再進行安裝,建議採用 cordova plugin add 指令進行線上安裝,如果要使用離線安裝,需要確認安裝檔案無缺漏。