超慢节点npm命令

Mic*_*Mic 14 windows cmd node.js npm

我有节点v.4.4与npm v.2.14.20(默认与Windows安装程序捆绑在一起).我的操作系统:Windows 7 64位.硬件:戴尔笔记本电脑,16GB内存,SSD,核心i7.

我面临着一个非常慢的npm问题.例如,当我想检查节点的版本时

node --version
v4.4.0
Run Code Online (Sandbox Code Playgroud)

4.4.0在几毫秒内收到输出.但是当我打字的时候

npm --version
Run Code Online (Sandbox Code Playgroud)

我需要等待8-15秒才能收到输出!每个npm命令都是一样的.

我尝试了什么:更新npm(到最近的3.x版本),更新节点到5.9.0,我也尝试了x86版本的运气 - 同样的事情.

  1. 什么可以导致这样的"睡眠"的线索(它只有npm,每个其他cmd命令工作正常,系统工作正常)?
  2. 我会很感激我可以调试这个东西的任何提示,看看幕后发生了什么

Set*_*day 1

我打赌你的PATH中有很多项目。这是该场景的常见症状。

在您的终端中,运行:

echo "$PATH"
Run Code Online (Sandbox Code Playgroud)

如果输出中包含超过 8 或 9 个冒号,或者/其中存在像根目录这样的大目录,那么这很可能是罪魁祸首。

作为对比的依据,我PATH在macOS上精心打造的是:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)

如果我运行which npm,输出是:

/usr/local/bin/npm
Run Code Online (Sandbox Code Playgroud)

这告诉我 mynpm位于my 的早期PATH,这对于性能很重要,因为PATH从左到右搜索npm每个目录中是否存在 。

您可以通过简单地运行以下命令快速尝试PATH上面的方法,而不会产生任何永久性后果:

OLDPATH="$PATH"
PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
Run Code Online (Sandbox Code Playgroud)

现在尝试运行之前快和慢的命令,看看是否有任何差异。

如果您开始看到“命令未找到”错误,请尝试逐步将内容添加回您的文件中PATH或简单地运行:

PATH="$OLDPATH"
Run Code Online (Sandbox Code Playgroud)

否则,如果性能保持不变,那么它可能不是您的PATH。但如果情况有所改善,请继续阅读以使其永久化。

选择PATH最适合您的并将其放入 shell 的启动文件中。这通常位于~/.bashrc~/.bash_profile。尝试找到已经有一行的启动文件PATH=...,注释掉现有行(确保添加解释性注释),然后插入具有更好值的类似行。

  • 我敢打赌这是针对 Unix 或类似的东西的。但这是关于 Windows 的问题,而不是 Unix (2认同)