npm-doctor

检查您的 npm 环境的健康状况

选择 CLI 版本

概要

npm doctor [ping] [registry] [versions] [environment] [permissions] [cache]

注意:此命令不知道工作区。

描述

npm doctor 运行一组检查以确保您的 npm 安装具有管理 JavaScript 包所需的条件。npm 基本上是一个独立的工具,但它确实有一些必须满足的基本要求

  • Node.js 和 git 必须可由 npm 执行。
  • 主要 npm 注册表,registry.npmjs.com,或使用注册表 API 的其他服务可用。
  • npm 使用的目录,node_modules(本地和全局),存在并且当前用户可以写入。
  • npm 缓存存在,并且其中的包 tarball 不损坏。

如果没有所有这些正常工作,npm 可能无法正常工作。许多问题通常归因于 npm 代码库之外的事情,所以 npm doctor 确认 npm 安装处于良好状态。

此外,除了这一点之外,还有很多由于使用旧版本的 npm 而导致的问题报告。由于 npm 不断改进,运行 npm@latest 比运行旧版本更好。

npm doctor 验证您的环境中的以下项目,如果存在任何建议的更改,它将显示它们。默认情况下,npm 运行所有这些检查。您可以通过指定它们作为额外的参数来限制运行哪些检查。

npm ping

默认情况下,npm 从主要 npm 注册表 registry.npmjs.org 安装。 npm doctor 访问注册表中的一个特殊的 ping 端点。也可以使用 npm ping 检查它。如果此检查失败,您可能正在使用需要配置的代理,或者可能需要与您的 IT 员工联系以获取通过 HTTPS 访问 registry.npmjs.org 的权限。

此检查针对您配置的任何注册表进行(您可以通过运行 npm config get registry 查看它是什么),如果您使用的是不支持主要注册表支持的 /whoami 端点的私有注册表,此检查可能会失败。

npm -v

虽然 Node.js 可能与特定版本的 npm 捆绑在一起,但 CLI 团队的政策是建议所有用户都运行 npm@latest(如果可以)。由于 CLI 由一小群贡献者维护,只有一个开发路线的资源,因此 npm 自己的长期支持版本通常只收到关键的安全和回归修复。该团队认为,最新的测试版 npm 几乎总是最有可能成为功能最全、缺陷最少的 npm 版本。

node -v

对于大多数用户而言,在大多数情况下,最佳版本的 Node 将是最新的长期支持 (LTS) 版本。那些希望访问新的 ECMAscript 功能或 Node 标准库的最新更改的人可能正在运行较新的版本,有些人可能需要运行较旧版本的 Node,因为企业更改控制策略。这没关系!但总的来说,npm 团队建议大多数用户运行 Node.js LTS。

npm config get registry

您可能正在为您的项目或公司从私有包注册表进行安装。太棒了!其他人可能正在按照教程或 StackOverflow 问题来解决您可能遇到的问题。有时,这可能需要更改您指向的注册表。 npm doctor 的这一部分只是让您(以及可能帮助您进行支持的人)知道您没有使用默认注册表。

which git

虽然在自述文件中有所记载,但可能不清楚 npm 需要安装 Git 才能完成它所做的许多事情。此外,在某些情况下(尤其是在 Windows 上),您可能以无法通过 PATH 访问 Git 的方式设置了 Git,以便 npm 可以找到它。此检查确保 Git 可用。

权限检查

  • 您的缓存必须可由运行 npm 的用户读取和写入。
  • 全局包二进制文件必须可由运行 npm 的用户写入。
  • 您的本地 node_modules 路径(如果您在项目目录中运行 npm doctor)必须可由运行 npm 的用户读取和写入。

验证缓存包的校验和

发布 npm 包时,发布过程会生成一个校验和,npm 在安装时使用它来验证包在传输过程中是否已损坏。 npm doctor 使用这些校验和来验证您本地缓存中的包 tarball(您可以使用 npm config get cache 查看该缓存的位置)。如果您的缓存中存在损坏的包,您可能应该运行 npm cache clean -f 并重置缓存。

配置

注册表

npm 注册表的基 URL。

另请参见