NPM 常見錯誤

找不到兼容版本

你有一個過期的npm。請更新到最新穩定的npmhtml

權限錯誤

npm ERR! code EPERM
npm ERR! code EACCES
  • 修復緩存的權限sudo chown -R $(whoami) "$HOME/.npm"
  • 再試一次sudo例如sudo npm install express -g(以後您可能須要修復緩存權限,如上所述)。
  • 從新安裝節點,所以它不須要sudo

使用0.8的Travis項目沒法升級到npm 2

在你的.travis.yml替換中:node

before_install
- npm install -g npm @ latest 

有了這個:git

before_install
- ' [「$ {TRAVIS_NODE_VERSION}」!=「0.8」] || npm install -g npm@1.4.28 ' 
- npm install -g npm @ latest 

這個建議是基於這個特拉維斯問題,來自@simondean禮貌github

Error: ENOENT, stat 'C:\Users\<user>\AppData\Roaming\npm' 在Windows 7上

這是joyent / node#8141的結果,而且是Windows的Node安裝程序的問題。解決方法是確保C:\Users\<user>\AppData\Roaming\npm存在而且可使用普通用戶賬戶寫入。web

沒有空間

npm ERR! Error: ENOSPC, write

您正在嘗試安裝在沒有空間或沒有寫入權限的驅動器上。shell

  • 釋放一些磁盤空間或
  • 將tmp文件夾設置在具備更多空間的位置:npm config set tmp /path/to/big/drive/tmp
  • 本身構建節點並將其安裝在可寫空間很大的地方。

沒有git

npm ERR! not found: git
ENOGIT

你須要安裝gitexpress

因爲路徑長度問題,在Windows上運行Vagrant框失敗

@drmyersii經歷了一個聽起來很麻煩的試驗和錯誤,想出了一個涉及Windows長路徑和一些自定義Vagrant配置的工做解決方案:npm

這是我實現它的提交,但我會繼續發佈代碼的主要代碼片斷:json

配置vm 提供者  virtualbox 作  | v | 
    v 自定義  [ sharedfolder 添加 ID --name WWW --hostpath // / + 文件目錄名__FILE__ + / WWW GSUB / \\           ]
結束
 
配置vm 提供  shell 內聯 mkdir / home / vagrant / www   
配置vm 提供  shell 內聯 mount -t vboxsf -o uid =`id -u vagrant`,gid =`getent group vagrant | cut -d:-f3`> www / home / vagrant / www run always     

在上面的代碼中,我將附加\\?\到當前目錄的絕對路徑。這實際上會強制Windows API容許增長MAX_PATH變量(一般上限爲260)。詳細瞭解最大路徑這是在共享文件夾建立期間發生的,這是由VBoxManage有意處理而不是Vagrant的「synced_folder」方法。最後一點是不言自明的; 咱們建立新的共享文件夾,而後確保每次訪問或觸摸機器時都會掛載它,由於Vagrant喜歡在每次加載時從新加載其掛載/共享文件夾。windows

npm僅使用git:ssh+git:GitHub repos的URL,破壞代理

@LaurentGoderre一些Git 技巧解決了這個問題

我經過運行如下兩個命令修復了個人幾個同事的這個問題:

git config --global url."https://github.com/".insteadOf git@github.com:
git config --global url."https://".insteadOf git://

咱們注意到的一件事是.gitconfig使用的並不老是預期的,因此若是你在一臺機器上修改了共享驅動器的主路徑,你須要確保.gitconfig你的共享驅動器和c:\users\[your user]\

SSL錯誤

npm ERR! Error: 7684:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:openssl\ssl\s23_clnt.c:787:

您正在嘗試將SSL與未加密的端點進行通訊。一般,這是因爲代理 配置 錯誤(另請參閱此幫助,若是過期,指南)。在這種狀況下,您但願禁用strict-ssl- 您可能須要設置CA / CA文件以用於您的代理,但最好花些時間來解決這個問題,而不是禁用SSL保護。

npm ERR! Error: SSL Error: CERT_UNTRUSTED
npm ERR! Error: SSL Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE

若是您正在運行Node 0.6,則會發生此問題。請升級到0.8或以上的節點。看到這個職位的詳細信息

您也能夠嘗試這些解決方法:npm config set ca ""npm config set strict-ssl false

npm ERR! Error: SSL Error: SELF_SIGNED_CERT_IN_CHAIN

npm再也不支持自簽名證書

或者:

  • 升級您的npm版本 npm install npm -g --ca=""
  • 告訴你當前版本的npm使用已知的註冊商 npm config set ca=""

若是這不能解決問題,那麼您可能擁有SSL攔截代理。(例如,https://github.com/npm/npm/issues/7439#issuecomment-76024878

SSL攔截代理

未解。請參閱https://github.com/npm/npm/issues/9282

找不到/服務器錯誤

npm http 404 https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.0.tgz
npm ERR! fetch failed https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.0.tgz
npm ERR! Error: 404 Not Found
npm http 500 https://registry.npmjs.org/phonegap
  • 這極可能是一個臨時的npm註冊表故障。檢查npm服務器狀態,稍後再試。
  • 若是錯誤仍然存​​在,則發佈的包可能已損壞。聯繫包全部者,讓他們發佈新版本的包。

無效的JSON

Error: Invalid JSON
npm ERR! SyntaxError: Unexpected token <
npm ERR! registry error parsing json
  • 可能的臨時npm註冊表故障,或損壞的本地服務器緩存。運行npm cache clean和/或稍後再試。
  • 這多是由對錶明提供HTML響應的公司代理引發的package.json檢查npm的代理配置
  • 檢查您嘗試安裝的軟件包是否存在問題(例如無效package.json)。

輸出中有不少ENOENTENOTEMPTY錯誤

編寫npm是爲了在安裝時有效地使用資源,其中一部分是它嘗試同時執行儘量多的事情。有時這會致使競爭條件和其餘同步問題。從npm 2.0.0開始,解決了大量這些問題。若是你看到ENOENT lstatENOENT chmodENOTEMPTY unlink,或在你的日誌輸出相似的東西,嘗試更新NPM到最新版本。若是問題仍然存在,請查看npm / npm#6043並查看是否有人已經討論過您的問題。

cb() never called! 使用shrinkwrapped依賴項時

看一下#5920號問題咱們正在努力修復這個,但這是一個至關微妙的競爭條件,它花了咱們一點時間。您能夠嘗試將npm-shrinkwrap.json文件移開,直到咱們將其修復爲止。這已在npm版本中修復npm@2.1.5,所以更新爲npm@latest

npm login 錯誤

有時npm login失敗沒有明顯的緣由。首先要登陸https://www.npmjs.com/login並檢查您的電子郵件地址是否npmjs.com與您提供的電子郵件地址相符npm login

若是那不是問題,或者您正在看到該消息"may not mix password_sha and pbkdf2",那麼

  1. 登陸https://npmjs.com/
  2. 經過https://npmjs.com/password更改密碼- 您甚至能夠將其「更改」爲相同的密碼
  3. 清除與登陸相關的字段~/.npmrc- 例如,經過運行sed -ie '/registry.npmjs.org/d' ~/.npmrc
  4. npm login

它一般彷佛工做。

有關此問題的歷史記錄,請參閱https://github.com/npm/npm/issues/6641#issuecomment-72984009

npm 掛在Windows上 addRemoteTarball

檢查是否在您的設置中設置了兩個臨時目錄.npmrc

> npm config ls -l

查找定義tmpconfig變量的行。若是您找到多個,請刪除除其中一個以外的全部內容。

有關此異常問題的詳細信息,請參閱https://github.com/npm/npm/issues/7590

其餘

  • 只需運行npm cache clean並再次嘗試便可解決一些奇怪的問題
  • 若是您遇到問題npm install,請使用該-verbose選項獲取更多詳細信息。
相關文章
相關標籤/搜索