錯誤

npm 安裝中斷

如果您的 npm 已損毀

隨機錯誤

  • 只要執行 npm cache clean 並重試,就能解決一些奇怪的問題。
  • 如果您在使用 npm install 時遇到問題,請使用 -verbose 選項查看更多詳細資訊。

找不到相容版本

您的 npm 已過時。請更新至最新穩定 npm

權限錯誤

請參閱「下載並安裝 Node.js 和 npm」和「解決安裝套件至全域時發生的 EACCES 權限錯誤」中的討論,以了解避免和解決權限錯誤的方法。

錯誤:ENOENT,狀態「C:\Users\<user>\AppData\Roaming\npm」在 Windows 7

Windows 7 上的錯誤 Error: ENOENT, stat 'C:\Users\<user>\AppData\Roaming\npm'joyent/node#8141 的後果,也是 Windows 的 Node 安裝程式的問題。解決方法是確保 C:\Users\<user>\AppData\Roaming\npm 存在,且您的正常使用者帳戶具有寫入權限。

空間不足

npm ERR! Error: ENOSPC, write

您嘗試安裝在沒有空間或沒有寫入權限的磁碟機上。

  • 釋出一些磁碟空間或
  • 將 tmp 資料夾設定在空間較大的位置:npm config set tmp /path/to/big/drive/tmp
  • 自行建置 Node 並將其安裝在具有大量空間且可寫入的位置。

沒有 git

npm ERR! not found: git
ENOGIT

您需要 安裝 git。或者,您可能需要將您的 git 資訊新增至您的 npm 個人資料。您可以從命令列或網站執行此操作。如需詳細資訊,請參閱「管理您的個人資料設定」。

在 Windows 上執行 Vagrant 盒子時,因路徑長度問題而失敗

@drmyersii 經歷了看似痛苦的嘗試和錯誤,才想出一個可行的解決方案,涉及 Windows 長路徑和一些自訂的 Vagrant 組態

這是我在其中實作的提交,但我在此貼上主要程式碼片段

config.vm.provider "virtualbox" do |v|
v.customize ["sharedfolder", "add", :id, "--name", "www", "--hostpath", (("//?/" + File.dirname(__FILE__) + "/www").gsub("/","\\"))]
end
config.vm.provision :shell, inline: "mkdir /home/vagrant/www"
config.vm.provision :shell, inline: "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 的「同步資料夾」方法。最後一部分相當不言自明;我們建立新的共享資料夾,然後確保每次存取或觸及機器時都會掛載,因為 Vagrant 喜歡在每次載入時重新載入其掛載/共享資料夾。

npm 僅使用 git:ssh+git: URL 來存取 GitHub 存放庫,會中斷代理伺服器

@LaurentGoderre 使用 一些 Git 技巧 修復了這個問題

我透過執行以下兩個指令為多位同事修復了這個問題

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

我們注意到的一件事是,使用的 .gitconfig 並非總是預期的,因此如果您在已將家目錄修改為共享磁碟的機器上,您需要確保您的 .gitconfig 在您的共享磁碟和 c:\users\[您的使用者]\ 中相同

SSL 錯誤

npm ERR! 錯誤:7684:錯誤:140770FC:SSL 常式:SSL23_GET_SERVER_HELLO:未知通訊協定:openssl\ssl\s23_clnt.c:787

您嘗試與未加密的端點進行 SSL 通訊。通常,這是由於 代理 組態 錯誤(另請參閱 這份有用的指南,儘管有點過時)。在這種情況下,您要停用 strict-ssl – 您可能需要為您的代理設定 CA/CA 檔案,但花時間找出問題比停用 SSL 保護好得多。

npm ERR! 錯誤:SSL 錯誤:CERT_UNTRUSTED npm ERR! 錯誤:SSL 錯誤:UNABLE_TO_VERIFY_LEAF_SIGNATURE

如果您正在執行 Node 0.6,將會發生這個問題。請升級到 node 0.8 或以上版本。 查看這篇文章以取得詳細資訊

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

npm ERR! 錯誤:SSL 錯誤: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

錯誤:無效 JSON npm ERR! SyntaxError:意外的符號 < npm ERR! 註冊表錯誤,剖析 json
  • 可能是暫時性的 npm 註冊表故障,或損毀的本地伺服器快取。執行 npm cache clean 和/或稍後再試。
  • 這可能是由企業代理伺服器造成的,它們會對 package.json 要求提供 HTML 回應。請檢查 npm 的代理伺服器 設定
  • 請檢查這是否為您嘗試安裝的套件的問題(例如,無效的 package.json)。

輸出中出現許多 ENOENT / ENOTEMPTY 錯誤

npm 會在安裝時有效率地使用資源,其中一部分是它會盡可能同時執行多項工作。有時這會導致競爭條件和其他同步問題。在 npm 2.0.0 中,已解決了非常大量的這些問題。如果您在日誌輸出的 ENOENT lstatENOENT chmodENOTEMPTY unlink 或類似內容中看到這些問題,請嘗試將 npm 更新至最新版本。如果問題仍然存在,請查看 npm/npm#6043,看看是否有人已經討論過您的問題。

cb() 永不呼叫!使用封裝相依性時

查看 問題 #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

尋找定義 tmp 設定變數的行。如果您找到多個,請移除其中一個以上。

請參閱 https://github.com/npm/npm/issues/7590 以進一步了解這個不尋常的問題。

npm 未在 Windows 電腦上執行最新版本

請參閱 這裡 關於 Windows 的部分。