# 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。