目录
常见错误
目录
错误
- 损坏的 npm 安装
- 随机错误
- 找不到兼容版本
- 权限错误
错误:ENOENT,stat 'C:\Users\<user>\AppData\Roaming\npm'
在 Windows 7 上- 没有空间
- 没有 git
- 由于路径长度问题,在 Windows 上运行 Vagrant 虚拟机失败
- npm 仅对 GitHub 仓库使用
git:
和ssh+git:
URL,导致代理中断 - SSL 错误
- SSL 拦截代理
- 未找到/服务器错误
- 无效的 JSON
- 输出中出现许多
ENOENT
/ENOTEMPTY
错误 cb() 从未调用!
当使用 shrinkwrapped 依赖项时- npm 登录错误
npm
在 Windows 上addRemoteTarball
时挂起- npm 在 Windows 机器上没有运行最新版本
损坏的 npm 安装
如果你的 npm 坏了
- 在 Mac 或 Linux 上,重新安装 npm.
- Windows:如果你在 Windows 上,并且你的安装坏了,最简单的方法是从官方安装程序重新安装 node(参见 关于安装最新稳定版本的说明)。
随机错误
- 一些奇怪的问题可以通过简单地运行
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: gitENOGIT
你需要安装 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("/","\\"))]endconfig.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://".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 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.tgznpm ERR! fetch failed https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.0.tgznpm 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 lstat
、ENOENT chmod
、ENOTEMPTY 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"
,那么
- 在 https://npmjs.net.cn/ 上登录
- 在 https://npmjs.net.cn/password 上更改密码 – 您甚至可以将其“更改”为相同的密码
- 从
~/.npmrc
中清除与登录相关的字段 – 例如,通过运行sed -ie '/registry.npmjs.org/d' ~/.npmrc
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 的部分 此处.