错误

损坏的 npm 安装

如果你的 npm 坏了

随机错误

  • 一些奇怪的问题可以通过简单地运行 npm cache clean 并重试来解决。
  • 如果你在使用 npm install 时遇到问题,请使用 -verbose 选项以查看更多详细信息。

找不到兼容版本

你的 npm 版本过时了。请更新到最新稳定版本的 npm.

权限错误

请参见“下载和安装 Node.js 和 npm”和“解决全局安装包时出现的 EACCES 权限错误”中的讨论,了解如何避免和解决权限错误。

错误:ENOENT,stat 'C:\Users\<user>\AppData\Roaming\npm' 在 Windows 7 上

错误 错误:ENOENT,stat 'C:\Users\<user>\AppData\Roaming\npm' 在 Windows 7 上是 joyent/node#8141 的结果,是 Windows 上的 Node 安装程序的问题。解决方法是确保 C:\Users\<user>\AppData\Roaming\npm 存在且你的普通用户帐户具有写入权限。

没有空间

npm ERR! 错误:ENOSPC,写入

你正在尝试安装到一个磁盘上,该磁盘要么没有空间,要么没有写入权限。

  • 释放一些磁盘空间或
  • 将 tmp 文件夹设置为具有更多空间的位置:npm config set tmp /path/to/big/drive/tmp
  • 自己构建 Node 并将它安装到可写入且空间很大的位置。

没有 git

npm ERR! not found: git
ENOGIT

你需要安装 git。或者,你可能需要将你的 git 信息添加到你的 npm 个人资料中。你可以从命令行或网站进行操作。有关更多信息,请参见“管理你的个人资料设置”。

由于路径长度问题,在 Windows 上运行 Vagrant 虚拟机失败

@drmyersii 经历了看似很多痛苦的试错过程,才找到了一个有效的解决方案,其中涉及 Windows 长路径和一些自定义 Vagrant 配置

这是我在其中实现它的提交,但我将在这里发布主要代码片段

config.vm.provider "virtualbox" do |v|
v.customize ["sharedfolder", "add", :id, "--name", "www", "--hostpath", (("//?/" + File.dirname(__FILE__) + "/www").gsub("/","\\"))]
end
config.vm.provision :shell, inline: "mkdir /home/vagrant/www"
config.vm.provision :shell, inline: "mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` > www /home/vagrant/www", run: "always"

在上面的代码中,我在当前目录的绝对路径后面追加了 \\?\。这实际上会强制 Windows API 允许增加 MAX_PATH 变量(通常限制为 260)。阅读更多关于max path 的信息。这是在共享文件夹创建期间发生的,它有意由 VBoxManage 处理,而不是 Vagrant 的“synced_folder”方法。最后一段非常简单易懂;我们创建新的共享文件夹,然后确保在每次访问或修改机器时都将其挂载,因为 Vagrant 倾向于在每次加载时重新加载其挂载/共享文件夹。

npm 仅对 GitHub 仓库使用 git:ssh+git: URL,导致代理中断

@LaurentGoderre 使用 一些 Git 技巧 修复了这个问题

我通过运行以下两个命令为我的几个同事修复了这个问题

git config --global url."https://github.com/".insteadOf [email protected]:
git config --global url."https://".insteadOf git://

我们注意到的一件事是,使用的 .gitconfig 并不总是预期的那个,因此如果你在修改了主路径为共享驱动器的机器上,你需要确保你的 .gitconfig 在你的共享驱动器和 c:\users\[你的用户]\ 中相同

SSL 错误

npm ERR! 错误:7684:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:openssl\ssl\s23_clnt.c:787

您尝试与未加密的端点建立 SSL 连接。通常情况下,这是由于 代理 配置 错误(另请参见 此有用的指南,虽然有点过时)。在这种情况下,您**不**希望禁用 strict-ssl – 您可能需要设置 CA / CA 文件以与您的代理一起使用,但花时间弄清楚这一点比禁用 SSL 保护要好得多。

npm ERR! Error: SSL Error: CERT_UNTRUSTED npm ERR! Error: SSL Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE

如果您正在运行 Node 0.6,则会出现此问题。请升级到 node 0.8 或更高版本。 查看此帖子以了解详细信息.

您也可以尝试以下解决方法:npm config set ca ""npm config set strict-ssl false

npm ERR! Error: SSL Error: SELF_SIGNED_CERT_IN_CHAIN

npm 不再支持其自签名证书

要么

  • 升级您的 npm 版本 npm install npm -g --ca=""
  • 告诉您当前的 npm 版本使用已知注册中心 npm config set ca=""

如果这不能解决问题,那么您可能有一个 SSL 拦截代理。(例如,https://github.com/npm/npm/issues/7439#issuecomment-76024878

SSL 拦截代理

未解决。查看 https://github.com/npm/npm/issues/9282

未找到/服务器错误

npm http 404 https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.0.tgz
npm ERR! fetch failed https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.0.tgz
npm ERR! Error: 404 Not Found
npm http 500 https://registry.npmjs.org/phonegap
  • 这很可能是 npm 注册表暂时故障。查看 npm 服务器状态,稍后再试。
  • 如果错误仍然存在,可能是发布的软件包已损坏。联系软件包所有者并让他们发布新版本的软件包。

无效的 JSON

Error: Invalid JSON npm ERR! SyntaxError: Unexpected token < npm ERR! registry error parsing json
  • 可能是 npm 注册表暂时故障,或本地服务器缓存已损坏。运行 npm cache clean 和/或稍后再试。
  • 这可能是由企业代理引起的,这些代理会对 package.json 请求返回 HTML 响应。检查 npm 的代理 配置.
  • 检查这是否不是您尝试安装的软件包的问题(例如无效的 package.json)。

输出中出现许多 ENOENT / ENOTEMPTY 错误

npm 被设计为在安装时有效地使用资源,这其中一部分是它尝试尽可能多地同时执行操作。有时,这会导致竞争条件和其他同步问题。从 npm 2.0.0 开始,已经解决了大量此类问题。如果您在日志输出中看到 ENOENT lstatENOENT chmodENOTEMPTY unlink 或类似内容,请尝试将 npm 更新到最新版本。如果问题仍然存在,请查看 npm/npm#6043 并查看是否有人已经讨论过您的问题。

cb() 从未调用! 当使用 shrinkwrapped 依赖项时

查看 问题 #5920我们正在努力解决这个问题,但它是一个相当微妙的竞争条件,需要我们一些时间。您可以尝试将 npm-shrinkwrap.json 文件移出,直到我们修复它。 这个问题在 [email protected] 之后版本的 npm 中已得到解决,因此请更新到 npm@latest

npm login 错误

有时 npm login 会毫无缘由地失败。首先要做的是在 https://npmjs.net.cn/login 上登录并检查您的 npmjs.com 上的电子邮件地址是否与您提供给 npm login 的电子邮件地址匹配。

如果这不是问题,或者如果您看到消息 "may not mix password_sha and pbkdf2",那么

  1. https://npmjs.net.cn/ 上登录
  2. https://npmjs.net.cn/password 上更改密码 – 您甚至可以将其“更改”为相同的密码
  3. ~/.npmrc 中清除与登录相关的字段 – 例如,通过运行 sed -ie '/registry.npmjs.org/d' ~/.npmrc
  4. npm login

通常情况下,它似乎可以工作。

查看 https://github.com/npm/npm/issues/6641#issuecomment-72984009 以了解此问题的历史记录。

npm 在 Windows 上 addRemoteTarball 时挂起

检查您的 .npmrc 中是否设置了两个临时目录

> npm config ls -l

查找定义 tmp 配置变量的行。如果您找到多个,请删除除一个以外的所有行。

查看 https://github.com/npm/npm/issues/7590 以了解有关此不寻常问题的更多信息。

npm 在 Windows 机器上没有运行最新版本

查看有关 Windows 的部分 此处.