npm doctor
npm doctor 功能
检查您的环境
npm doctor 使用
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 获取注册表
某些人可能是从私有软件包注册表中为您的项目或公司安装的。那很棒!
你们中的其他人可能正在关注教程或 StackOverflow 问题,以解决您可能遇到的问题。
有时,这可能需要更改您指向的注册表。这部分的内容 npm doctor 是让您(可能是正在帮助您获得支持的人)知道您没有使用默认注册表。
which git
虽然自述文件中已对此进行了记录,但可能并不明显 npm 需要安装 Git 来完成它所做的许多事情。此外,在某些情况下(尤其是在 Windows 上),您可能会以无法通过您的方式访问 Git 的方式设置 Git,PATH 以便 npm 可以找到它。此检查确保 Git 可用。
Permissions checks
- 运行 npm 的用户必须可以读取和写入缓存。
- 全局软件包二进制文件必须是运行 npm 的用户可写的。
- node_modules 如果您正在 npm doctor 使用项目目录运行,则本地路径必须由运行 npm 的用户可读可写。
验证缓存包的校验
发布 npm 软件包时,发布过程将生成一个校验和,npm 在安装时会使用该校验和来验证软件包在传输过程中没有损坏。
npm doctor 使用这些校验和来验证本地缓存中的软件包 tarball(您可以使用查看缓存所在的位置 npm config get cache,并查看缓存中包含的内容 npm cache ls–可能比您预期的还要多!)。
如果您的缓存中有损坏的软件包,则可能应该运行 npm cache clean 并重置缓存。