目錄
常見錯誤
目錄
錯誤
- npm 安裝中斷
- 隨機錯誤
- 找不到相容版本
- 權限錯誤
錯誤:ENOENT,狀態「C:\Users\<user>\AppData\Roaming\npm」
在 Windows 7- 空間不足
- 沒有 git
- 在 Windows 上執行 Vagrant 盒子時,因路徑長度問題而失敗
- npm 僅使用
git:
和ssh+git:
URL 來存取 GitHub 存放庫,會中斷代理伺服器 - SSL 錯誤
- SSL 攔截代理伺服器
- 找不到 / 伺服器錯誤
- 無效的 JSON
- 輸出中出現許多
ENOENT
/ENOTEMPTY
錯誤 cb() 永不呼叫!
使用封裝相依性時- npm 登入錯誤
npm
在 Windows 上於addRemoteTarball
處當機- npm 未在 Windows 電腦上執行最新版本
npm 安裝中斷
如果您的 npm 已損毀
- 在 Mac 或 Linux 上,重新安裝 npm。
- Windows:如果您在 Windows 上且安裝已損毀,最簡單的方法是從官方安裝程式重新安裝 node(請參閱 此關於安裝最新穩定版本的注意事項)。
隨機錯誤
- 只要執行
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: gitENOGIT
您需要 安裝 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("/","\\"))]endconfig.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 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.tgznpm ERR! fetch failed https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.0.tgznpm 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 lstat
、ENOENT chmod
、ENOTEMPTY unlink
或類似內容中看到這些問題,請嘗試將 npm 更新至最新版本。如果問題仍然存在,請查看 npm/npm#6043,看看是否有人已經討論過您的問題。
cb() 永不呼叫!
使用封裝相依性時
查看 問題 #5920。 我們正在努力修復這個問題,但這是一個相當微妙的競爭條件,需要我們花一點時間。您可以在我們修復此問題之前嘗試將 此問題已在 npm npm-shrinkwrap.json
檔案移開。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"
,那麼
- 登入 https://npmjs.com/
- 在 https://npmjs.com/password 變更密碼 – 您甚至可以將其「變更」為相同的密碼
- 從
~/.npmrc
中清除與登入相關的欄位 – 例如,透過執行sed -ie '/registry.npmjs.org/d' ~/.npmrc
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 的部分。