2012-09-01 126 views
46

我目前有node.js版本0.8.8和npm 1.1.59安裝。npm不會安裝快遞?

每當我跑:

$ npm install -g express 

我得到這樣的回報:

npm ERR! Error: EACCES, open '/Users/devinandrews/.npm/64a534c1-express.lock' 
npm ERR! { [Error: EACCES, open '/Users/devinandrews/.npm/64a534c1-express.lock'] 
npm ERR! errno: 3, 
npm ERR! code: 'EACCES', 
npm ERR! path: '/Users/devinandrews/.npm/64a534c1-express.lock' } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

npm ERR! System Darwin 12.1.0 
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "express" 
npm ERR! cwd /Users/devinandrews 
npm ERR! node -v v0.8.8 
npm ERR! npm -v 1.1.59 
npm ERR! path /Users/devinandrews/.npm/64a534c1-express.lock 
npm ERR! code EACCES 
npm ERR! errno 3 
npm ERR! stack Error: EACCES, open '/Users/devinandrews/.npm/64a534c1-express.lock' 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /Users/devinandrews/npm-debug.log 
npm ERR! not ok code 0 

我拉我的頭髮現在試圖弄清楚這一點。

更新:

我跑

$ npm -g ls 

看到已在全球安裝了我什麼NPM:

/usr/local/lib 
├─┬ [email protected] 
│ ├── [email protected] 
│ ├─┬ [email protected] 
│ │ ├── [email protected] 
│ │ ├── [email protected] 
│ │ ├── [email protected] 
│ │ └── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └─┬ [email protected] 
│ └── [email protected] 
└─┬ [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├─┬ [email protected] 
    │ └── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected]0 
    ├── [email protected] 
    ├─┬ [email protected] 
    │ └── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├─┬ [email protected] 
    │ └─┬ [email protected] 
    │ └── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├─┬ [email protected] 
    │ └── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    └── [email protected] 

,但如果我運行:

$ npm ls 

返回空?

+0

你運行它作爲一個管理員?檢查有問題的鎖文件,看它是否不屬於與您運行的用戶不同的某個用戶 - 我想不出它會是什麼原因,但錯誤表明您沒有權限打開該文件文件,應由您的用戶擁有。 – lanzz

+0

我甚至沒有在我的用戶/ devinandrews目錄中看到.npm文件夾。我可以通過使用sudo npm install -g express來安裝它,但建議我不這樣做。 – Devin

+0

你在尋找shell或Finder中的'.npm'文件夾嗎?您可能在Finder中隱藏了點名(因爲它是默認值);請注意,我假設你在OSX上根據你的主目錄位置來判斷。 – lanzz

回答

141

我有同樣的問題,並npm cache clear沒有解決它。此問題是由於主目錄中的.npm目錄是使用root權限創建的。很可能您運行的第一個npm命令是sudo npm -g,現在您正嘗試在本地目錄中嘗試npm install

解決:

  • sudo chown -R yourusername ~/.npm
  • 這可能不是必要的,但我也不得不rmdir ~/tmp

npm install從之後的package.json這應該工作。

+1

我正在運行OSX。 chown的用戶名是什麼? .npm目前安裝在我的用戶/ [我的名字在這裏]文件夾中。 ;;也感到抱歉,差不多2個月後回來,哈哈。 – Devin

+0

這是因爲點符號不再使用。我使用$ USER,因爲我不知道我的用戶名應該是什麼..無論哪種方式,謝謝! – Devin

+0

運行'sudo npm install -g express'會出現問題嗎? –

0

你試過sudo npm -g install express嗎?

+0

我有,而且工作,但是我需要它在本地安裝在我的應用程序項目文件夾中,以便在我的項目中使用它。 – Devin

6

運行npm cache clean,並嘗試重新安裝

+0

我收到另一個錯誤,如果我這樣做。它太大,放在這裏.. – Devin

+0

Nice1謝謝。在所有這些其他選項中迷路了 – jarryd

4

我得到了同樣的問題,此問題是由於您的主目錄中的.npm目錄是使用root權限創建的。

使用:

$sudo npm install -g express 
0

解決的辦法是:

1 - CHOWN到您的用戶。NPM文件夾:

sudo chown -R Webmaste /Users/webmaste/.npm/ 

2 - 在您的測試文件夾或文件夾:

sudo npm install -g [email protected] 

3 - 調用快車從您的實際位置:

/usr/local/share/npm/bin/express 

4 -

sudo cd . && npm install 

5 - 最後:

node app 

在控制檯中的最後一條消息應該是這樣的:

Express server listening on port 3000 in development mode 
+0

首先,謝謝。其次,如果它有所不同,我在OSX。對chown不太熟悉。運行chown時,我應該使用什麼用戶名? – Devin

+0

'sudo cd'完全沒有意義。 cd是一個內置的,所以即使sudo可以啓動它,它也會在一個子shell中 –

0

如果你不能看到什麼不對使用sudo npm install -g package_name。輸入密碼時遇到問題,您可以將自己添加到sudoers文件或與npm可執行文件所屬的同一組中。

於是將自己添加到sudoers文件的NPM編輯/etc/sudoers添加類似這樣的文件的底部:

your_username localhost=/usr/local/bin/npm 

Here是如何實現分步指南,如果你需要更多的細節。

0

在我的情況下,而不是由root擁有的〜/ .npm目錄,它是〜/ tmp,我不認爲要等到其中一條錯誤消息最終讓我找到時才檢查。修復過程非常簡單,因爲它是一個tmp目錄,我們可以將它吹掉並重新開始。

sudo rmdir ~/tmp 
mkdir ~/tmp 
0

我面臨同樣的問題。

我通過轉到節點js下載網站升級了nodejs包,然後我沒有遇到這個問題。

謝謝 好運