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
虽然它在 README 中有记录,但 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 ls
查看该缓存中的内容 - 可能超出你的预期!)。 如果你的缓存中有损坏的包,你可能应该运行 npm cache clean
并重置缓存。