# npm doctor

检查您的环境

# 概要

npm doctor

注意

这个命令不支持工作空间。

# 描述

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 ping

默认情况下,npm 从主 npm 注册中心 registry.npmjs.org 安装。npm doctor 在注册中心中命中了一个特殊的 ping 端点。这也可以通过 npm ping 进行检查。如果此检查失败,您可能正在使用需要配置的代理,或者可能需要与您的 IT 人员交谈,以便通过 HTTPS 访问 egistry.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

虽然在 README 中有文档说明,但 npm 需要安装 Git 来完成它所做的许多事情,这一点可能并不明显。此外,在某些情况下,尤其是在 Windows 上,你可能把 Git 设置成不能通过 PATH 访问的方式,以便 npm 可以找到它。这个检查确保 Git 可用。

# 权限检查

  • 你的缓存必须对运行 npm 的用户是可读可写的。
  • 全局包二进制文件必须由运行 npm 的用户可写。
  • 你的本地 node_modules 路径,如果你在一个项目目录下运行 npm doctor,必须对运行 npm 的用户可读可写。

# 验证缓存包的校验和

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

# 配置

# registry

  • Default: "https://registry.npmjs.org/"
  • Type: URL

npm 注册中心的基本 URL。

Last Updated: 4/25/2023, 9:49:29 AM