NPM 已停止在 Windows 7 64 位上工作,在 install/update 上挂起

NPM has stopped working on Windows 7 64bit, hangs on install/update

在某些时候,我的 NPM 版本停止工作。几周前我尝试更新 npm(从 1.4 版 node 到现代 2.x 版本)时似乎发生了这种情况,并且情况越来越糟。我不得不更改环境变量以指向我的节点目录之前的 npm 目录(以获取新版本的 npm),此时一切都停止工作。我将环境变量切换回来,然后更新就会挂起。但奇怪的是,当我尝试调试它并在命令中添加 --verbose 时,更新在大多数情况下都能正常工作。有时他们挂在

npm http GET https://registry.npmjs.org/PACKAGE_NAME

但大部分时间他们都在工作。现在,旧版本的 NPM (1.4.1) 和我安装的新版本 (2.1.17) 都会发生这种情况,GET 命令总是失败(通常但不总是第一个)。我点击了清除缓存,清除了临时目录,尝试清除 %APPDATA/roaming/npm/,然后重新安装所有内容。我没有代理,但我有 运行:

 npm config set proxy

将代理设置为空白。我已将注册表设置为 http(而不是 https)并将 strict-ssl 设置为 false。我已经卸载并重新安装了 nodejs,但没有运气。我已经尝试 运行 从管理员 cmd 提示符而不是普通命令提示符执行命令,但都无济于事。我 运行 没有想法,真的需要 NPM 才能工作...

以下是清除 %APPDATA/roaming/npm 目录后尝试安装 g运行t-cli 的输出:

C:\Users\Kris Erickson>npm install -g grunt-cli --verbose
npm info it worked if it ends with ok
npm verb cli [ 'C:\Program Files\nodejs\\node.exe',
npm verb cli   'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js',
npm verb cli   'install',
npm verb cli   '-g',
npm verb cli   'grunt-cli',
npm verb cli   '--verbose' ]
npm info using npm@1.4.28
npm info using node@v0.10.35
npm verb node symlink C:\Program Files\nodejs\node.exe
npm verb cache add [ 'grunt-cli', null ]
npm verb cache add name=undefined spec="grunt-cli" args=["grunt-cli",null]
npm verb parsed url { protocol: null,
npm verb parsed url   slashes: null,
npm verb parsed url   auth: null,
npm verb parsed url   host: null,
npm verb parsed url   port: null,
npm verb parsed url   hostname: null,
npm verb parsed url   hash: null,
npm verb parsed url   search: null,
npm verb parsed url   query: null,
npm verb parsed url   pathname: 'grunt-cli',
npm verb parsed url   path: 'grunt-cli',
npm verb parsed url   href: 'grunt-cli' }
npm verb lock grunt-cli C:\Users\Kris Erickson\AppData\Roaming\npm-cache1ef8ac-grunt-cli.lock
npm verb addNamed [ 'grunt-cli', '' ]
npm verb addNamed [ null, '*' ]
npm verb lock grunt-cli@ C:\Users\Kris Erickson\AppData\Roaming\npm-cache\d63f3d0b-grunt-cli.lock
npm verb request where is /grunt-cli
npm verb request registry https://registry.npmjs.org/
npm verb request id dc44ca4b260df8c3
npm verb url raw /grunt-cli
npm verb url resolving [ 'https://registry.npmjs.org/', './grunt-cli' ]
npm verb url resolved https://registry.npmjs.org/grunt-cli
npm verb request where is https://registry.npmjs.org/grunt-cli
npm info trying registry request attempt 1 at 13:36:28
npm http GET https://registry.npmjs.org/grunt-cli
/

注意:旋转器永远不会停止(至少我已经离开它 10 分钟并且什么也没发生)。

看起来您可能已经安装了一个新的 npm 但它实际上并没有被使用(或者您是否恢复到 1.4.28?)

无论哪种情况,请尝试按照此处 https://github.com/npm/npm/wiki/Troubleshooting#upgrading-on-windows 的说明更新到 Windows 上的最新 npm。当前最新版本是 2.4.1。我建议使用选项 3。

然后尝试 运行 您的 npm install 命令的最详细程度:

npm -ddd install -g grunt-cli

并将您的日志文件作为要点上传 https://gist.github.com either here or as a new issue at https://github.com/npm/npm/issues,我们会帮助您解决这个问题。

您使用的版本号不符合 semantic versionning 约定 npm 使用:您需要指定 MAJOR.MINOR.PATCH 版本号。

您可以:

  1. 使用0.2.x表示法指定你不关心你使用的补丁版本,只要major.minor匹配
  2. 使用~0.2.0表示法指定你不关心你使用的补丁版本,只要major.minor匹配
  3. 阅读 npm's documentation and semver's documentation 了解其他可能性...

希望这对您有所帮助。

我是 运行 windows 8.1 中的节点。这个问题在一台新机器上突然出现,我搜索了几个小时没有成功。最后。无奈之下,我使用 fiddler 试图查看 npm 进行了哪些调用,问题神奇地消失了。

经过进一步调查,我发现 npm 似乎需要设置两个 windows 环境变量:

在 运行 npm 之前在命令提示符中尝试以下操作(注意:如果您实际上在代理后面,请将空引号替换为您的代理地址):

Setx http_proxy ""
Setx https_proxy ""