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 访问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 上——你可能将 Git 设置为无法通过你的方式访问,PATH
以便 npm 可以找到它。此检查可确保 Git 可用。
权限检查
- 你的缓存必须可由运行 npm 的用户读取和写入。
- 运行 npm 的用户必须可以写入全局包二进制文件。
node_modules
如果你使用npm doctor
项目目录运行,你的本地路径必须可由运行 npm 的用户读取和写入。
验证缓存包的校验和
发布 npm 包时,发布过程会生成一个校验和,npm 在安装时使用该校验和来验证包在传输过程中没有损坏。npm doctor
使用这些校验和来验证本地缓存中的包 tarball(您可以使用 来查看该缓存的位置npm config get cache
,并查看该缓存中的内容npm cache ls
- 可能超出您的预期!)。如果缓存中有损坏的包,您可能应该运行npm cache clean
并重置缓存。
配置
registry 注册表
- 默认值:
https : //registry.npmjs.org/
- 类型:
Url
npm 注册表的基本 URL。