npm doctor [ping] [registry] [versions] [environment] [permissions] [cache]
注意:此指令不了解工作區。
npm doctor
執行一系列檢查,以確保您的 npm 安裝具有管理 JavaScript 套件所需的項目。npm 主要是一個獨立的工具,但它確實有一些必須滿足的基本需求
- npm 必須能夠執行 Node.js 和 git。
- 可以使用主 npm 註冊中心
registry.npmjs.com
,或使用註冊中心 API 的其他服務。
- npm 使用的目錄
node_modules
(在本地和全球)存在,且目前的使用者可以寫入。
- npm 快取存在,且其中的套件 tarball 沒有損毀。
如果沒有所有這些正常運作,npm 可能無法正常運作。許多問題通常可以歸因於 npm 程式碼庫以外的事物,因此 npm doctor
確認 npm 安裝處於良好的狀態。
此外,還有很多問題報告是因使用舊版本的 npm 所致。由於 npm 不斷改進,執行 npm@latest
會比舊版本更好。
npm doctor
會驗證環境中的下列項目,如果有任何建議的變更,它會顯示出來。預設情況下,npm 會執行所有這些檢查。你可以指定額外的參數來限制執行的檢查。
預設情況下,npm 會從主要 npm 登錄 registry.npmjs.org
安裝。 npm doctor
會在登錄中執行特殊 ping 端點。這也可以用 npm ping
來檢查。如果這個檢查失敗,你可能使用需要設定的代理,或可能需要與 IT 人員溝通,以透過 HTTPS 存取 registry.npmjs.org
。
這個檢查會針對你設定的任何登錄執行(你可以透過執行 npm config get registry
來查看),如果你使用不支援主要登錄所支援的 /whoami
端點的私人登錄,這個檢查可能會失敗。
雖然 Node.js 可能會與特定版本的 npm 捆綁在一起,但 CLI 團隊的政策是,我們建議所有使用者在可以的情況下執行 npm@latest
。由於 CLI 是由一小群貢獻者維護的,所以只有一個開發線的資源,因此 npm 自己的長期支援版本通常只會收到重要的安全性與回歸修正。團隊相信最新測試的 npm 版本幾乎總是 npm 最具功能且無缺陷的版本。
對大多數使用者來說,在大多數情況下,Node 最佳版本會是最新長期支援 (LTS) 版本。想要存取新的 ECMAscript 功能或 Node 標準函式庫的最新變更的人可能會執行較新的版本,而有些人可能因為企業變更控制政策而必須執行較舊版本的 Node。這沒問題!但一般來說,npm 團隊建議大多數使用者執行 Node.js LTS。
你可能會為專案或公司從私人套件登錄安裝。這很好!其他人可能會遵循教學課程或 StackOverflow 問題,以解決你可能遇到的問題。有時候,這可能需要變更你指向的登錄。 npm doctor
的這個部分只是讓你,以及可能協助你支援的人,知道你沒有使用預設登錄。
雖然在 README 中有記載,但可能並不明顯,npm 需要安裝 Git 才能執行許多它所執行的動作。此外,在某些情況下,特別是在 Windows 上,你可能已設定 Git,但 npm 無法透過你的 PATH
找到它。這項檢查可確保 Git 可用。
- 快取必須可供執行 npm 的使用者讀取和寫入。
- 全域套件二進位檔必須可供執行 npm 的使用者寫入。
- 如果你使用專案目錄執行
npm doctor
,則你的本機 node_modules
路徑必須可供執行 npm 的使用者讀取和寫入。
當 npm 套件發布時,發布程序會產生一個檢查碼,npm 會在安裝時使用該檢查碼來驗證套件在傳輸過程中未損毀。 npm doctor
使用這些檢查碼來驗證本機快取中的套件 tarball(你可以使用 npm config get cache
查看該快取的位置)。如果快取中有損毀的套件,你可能應該執行 npm cache clean -f
並重設快取。
npm 登錄的基礎 URL。