2017-07-23 250 views
4

當我運行cordova plugin add cordova-plugin-geolocation時收到以下錯誤。我已經試過在這個文件夾上啓用777,將自己設置爲擁有者等。在這些情況下,我不允許使用sudo,但我相信如果我能解決問題。NPM /科爾多瓦權限錯誤:EACCES:權限被拒絕,scandir

Failed to install 'cordova-plugin-geolocation': Error: EACCES: permission denied, scandir '/Users/username/documents/core/myapp/app/platforms/ios/build/device/libCordova.a' 
    at Error (native) 
    at Object.fs.readdirSync (fs.js:952:18) 
    at GlobSync._readdir (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:275:41) 
    at GlobSync._readdirInGlobStar (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:254:20) 
    at GlobSync._readdir (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:263:17) 
    at GlobSync._processReaddir (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:135:22) 
    at GlobSync._process (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:130:10) 
    at GlobSync._processGlobStar (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:360:10) 
    at GlobSync._process (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:128:10) 
    at GlobSync._processGlobStar (/Users/username/documents/core/myapp/app/platforms/ios/cordova/node_modules/glob/sync.js:363:10) 
Error: EACCES: permission denied, scandir '/Users/username/documents/core/myapp/app/platforms/ios/build/device/libCordova.a' 
+1

首先你必須告訴我們你正在使用的cordova和插件的版本。此外,它只發生在這個特定的插件添加或所有? – Gandhi

+0

@甘地我修正了它。我所要做的只是重新安裝cordova而不使用sudo – jskidd3

+0

@Gandhi我提到這是一個權限錯誤,一般來說會排除Cordova的版本或特定的插件相關 – jskidd3

回答

6

NPM issue's

您可以修復使用三個選項這個問題:

1).Change the permission to npm's default directory. 
    2).Change npm's default directory to another directory. 
    3).Install node with a package manager that takes care of this for you. 

前進之前,您應該備份您的計算機。

方法1:將權限更改NPM的默認目錄

1).Find的路徑,故宮的目錄:

npm config get prefix 

對於許多系統,這將是/ usr /本地。

警告:如果顯示的路徑只是/ usr,請切換到選項2,否則您會弄亂您的權限。

2).Change NPM的目錄的所有者與當前用戶(用戶名的名稱):

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share} 

這改變了由NPM使用的子文件夾和其他一些工具的權限( lib/node_modules,bin和share)。

選項2:更改NPM的默認目錄到另一個目錄

有些時候,你不想改變NPM用途(即在/ usr)的默認目錄的所有權,因爲這可能會導致一些問題,例如如果您與其他用戶共享系統。

相反,您可以將npm配置爲完全使用不同的目錄。在我們的例子中,這將是我們的主文件夾中的隱藏目錄。

1)。使一個目錄全球安裝:

mkdir ~/.npm-global 

2).Configure NPM以使用新的目錄路徑:

npm config set prefix '~/.npm-global' 

3)。開或創建〜/配置文件並加入這行:

export PATH=~/.npm-global/bin:$PATH 

4).Back在命令行上,更新系統變量:

source ~/.profile 

測試:在不使用sudo的情況下全局下載軟件包。

npm install -g jshint 

除步驟2-4外,您還可以使用相應的ENV變量(例如,如果您不想修改〜/。配置文件):

NPM_CONFIG_PREFIX=~/.npm-global 

選項3:使用一個軟件包管理器爲您處理此問題。

如果您在Mac OS上進行全新節點安裝,您可以使用Homebrew軟件包管理器完全避免此問題。 Homebrew以正確的權限開箱即用。

brew install node 
+0

我欣賞你的詳細答案,但我解決這個問題,只需卸載科爾多瓦,然後重新安裝它,而不使用'sudo' – jskidd3

+0

這很好,我聽到你我們想要的解決方案就是它..繼續前進 – Kondal

+0

謝謝!我已經upvoted – jskidd3

相關問題