2015-04-06 41 views
22

試圖GYP WARN EACCES用戶「根」沒有權限訪問開發目錄

sudo npm install protractor -g 

和相同的臭名昭著的錯誤/再次警告(google搜索無果):

gyp WARN EACCES user "root" does not have permission to access the dev dir "/Users/dmitrizaitsev/.node-gyp/0.12.0" 

似乎發生的情況是node version 0.12.0在同一安裝過程中一次又一次地下載和重建,儘管它是我機器上的當前節點版本:

node -v 
v0.12.0 

問題:

  • 目錄 「/Users/dmitrizaitsev/.node-gyp/0.12.0」 實際上是失蹤了!爲什麼這樣一個誤導消息?

  • 爲什麼在node v0.12.0期間以及之前的成功重建node-gyp期間都沒有創建該目錄?

  • (很明顯)我怎樣才能防止這種情況發生?

我運行Mac OSX 10.8.5如果這是重要的。

回答

33

更新。有一個更好的方法 - 將npm的默認全局目錄更改爲您已擁有正確權限的用戶子目錄,因此不需要首先混淆系統文件的權限或所有權。

作爲推薦 https://docs.npmjs.com/getting-started/fixing-npm-permissions

  1. 使全球安裝一個目錄:
mkdir ~/npm-global 
  • 配置NPM到使用新的目錄路徑:
  • npm config set prefix '~/npm-global' 
    
  • 打開或創建一個~/.profile(或~/.bash_profile等)文件,並加入這一行(在該文件的結束):
  • export PATH=~/npm-global/bin:$PATH 
    

    另見的Sindre Sorhus關於這一專題指南:https://github.com/sindresorhus/guides/blob/master/npm-global-without-sudo.md


    現在想通了什麼事:

    目錄有錯的權限 - 這不是(這已經不是「訪問」更好的錯誤消息)。

    而且由於它不可寫,因此每次使用後都會使用並刪除一個臨時目錄,這就是爲什麼整個下載必須一次又一次運行。

    解決的辦法是設置用戶權限與

    sudo chown -R $USER <directory> 
    

    ,永不再sudo npm。 似乎每當您運行sudo npm時,所有創建的子目錄都會得到錯誤的權限,這將導致稍後出現問題。

    See here for more details

    7

    嘗試用:

    須藤NPM安裝-g 模塊--unsafe燙髮

    +1

    不,你不'sudo npm' - 看到我的答案! – 2015-04-22 04:00:47

    +0

    謝謝,它解決了我的問題。出於某種原因,我無法實現上述答案。 – 2015-10-05 15:08:43

    +0

    對我來說這工作。在root上運行npm以確保它可以作爲root運行。 --unsafe燙髮。感謝2年後的修復 – 2017-11-03 08:06:47

    2

    這是因爲您在此目錄中沒有文件夾「/Users/dmitrizaitsev/.node-gyp/0.12.0」。

    只需創建一個名爲0.12.0 一個新的文件夾,這是您的節點

    這將解決問題的版本號。

    +0

    ,遇到了9.0.0節點的這個問題,當然我沒有一個目錄'/usr/local/js/node-v9.0.0/lib/node_modules/@angular/cli/ node_modules/node-sass/.node-gyp/9.0.0',因爲這就是安裝腳本應該處理的內容。畢竟,這就是它的目的。相反,我在安裝過程中收到「沒有權限」錯誤和無限循環。 90年代的感覺。滑稽。 – 2017-11-01 16:12:33

    +0

    那麼,'mkdir'將安裝程序從循環中分離出來。談到下一個問題。 – 2017-11-01 16:21:48

    相關問題