在Windows 10上安装Node.js(和npm)

76

我在Windows 10上尝试安装Node时遇到了一些问题,并找到了解决方法。

错误如下:

C:\Users\Stephan>npm
Error: ENOENT,stat 'C:\Users\Stephan\AppData\Roaming\npm'

以下是解决方案。

10个回答

144

编辑: 看起来新的安装程序不再有这个问题了,可以参考此答案,由Parag Meshram提供的解决方案可能已经过时了。

原始回答:

请按照以下步骤操作:

  • http://nodejs.org/download/ 下载 64 位版本,32 位版本已过时
  • 将其安装到任何你想要的位置,默认情况下为:C:\Program Files\nodejs
  • 控制面板 -> 系统 -> 高级系统设置 -> 环境变量
  • 选择 PATH 并选择编辑它。

如果 PATH 变量为空,请更改为此值:C:\Users\{YOUR USERNAME HERE}\AppData\Roaming\npm;C:\Program Files\nodejs

如果 PATH 变量已包含 C:\Users\{YOUR USERNAME HERE}\AppData\Roaming\npm,请在后面添加以下内容:;C:\Program Files\nodejs

如果 PATH 变量包含信息,但没有关于 npm 的内容,请在 PATH 的末尾添加:;C:\Users\{YOUR USERNAME HERE}\AppData\Roaming\npm;C:\Program Files\nodejs

现在,PATH 变量已正确设置,你仍然可能会遇到错误。手动进入 AppData 目录,你会发现 Roaming 文件夹中没有 npm 目录。请手动创建此目录。

重新启动命令提示符,npm 现在将正常工作。


2
@captainrad 目前为止我还没有遇到任何问题,但在12月7日之前发布就不确定了。 - Stephan Bijzitter
1
@captainrad 当我将文件从C:\Program Files\nodejs复制到Windows 10的C:\Users{YOUR USERNAME HERE}\AppData\Roaming\npm时,它可以正常工作。 - onuralp
1
@DannyG 感谢您的编辑,但请仅在改进答案时进行编辑。有关此主题的更多信息,请参阅http://stackoverflow.com/help/editing。 - Stephan Bijzitter
4
提醒一下,Stephan,最近的编辑/回滚引发了一场(不错的)元对话,你可能值得花些时间去看一下。这可能会让你更了解DannyG编辑你的答案的背景。 - Kendra
3
"...是为嬉皮士设计的" ;-) - crishushu
显示剩余2条评论

68

访问http://nodejs.org/

点击上面写着“Download For ...”的按钮

这将会下载.msi文件(或者对于Mac系统是.pkg文件),它会为你完成所有的安装和路径设置,不像所选答案那样需要手动操作。


1
能否解释一下为什么被采纳的答案对你不起作用? - Stephan Bijzitter
11
如果您运行安装程序(.msi),则不需要手动输入路径,但被接受的答案要求我手动输入路径。 - Shai UI
3
那么要么安装程序在过去的几周内已经更新以自动执行此操作,要么您的系统运气很好 :-) 不过我对此表示怀疑。 - Stephan Bijzitter
3
这是正确的答案。如果你在使用 Windows 操作系统,则默认安装会起作用(.msi)…谢谢 @foreyez。 - Scott Stensland
1
这应该被标记为正确答案,因为它只是一个一步解决方案,而@StephanBijzitter的解决方案需要我首先浏览他们的下载目录,搜索正确的版本,而我不知道(不熟悉nodejs)。 - shivgre
显示剩余3条评论

15

除了@StephanBijzitter提供的答案外,我会使用以下PATH变量:

%appdata%\npm
%ProgramFiles%\nodejs

那么你的新的 PATH 将会是这样:

[existing stuff];%appdata%\npm;%ProgramFiles%\nodejs

这有一个优点,既不依赖用户,也不依赖32/64位。


如果您已将其安装在默认位置,则非常好,但请记住,如果没有安装在默认位置,这只会使PATH变量混乱不堪。 - Dave Morton

11
新的安装程序(.msi从https://nodejs.org下载)有"添加到PATH"选项,默认情况下已选择。确保您将其勾选。

Add to PATH


1
终于好了 :-) - Stephan Bijzitter
1
奇怪,我使用了这个安装程序,它们肯定被选中了。但我仍然不得不将nodejs文件夹添加到路径变量中。 - DerpyNerd

3

所有应该安装在%appdata%(C:\Users\\AppData\Roaming)中,而不是“program files”文件夹。

原因如下:

默认的MSI安装程序将Node和其中附带的NPM安装在“program files”文件夹中,并将其添加到系统路径中,但它将用户路径设置为NPM的%appdata%(c:\users[username]\appdata\roaming),因为用户没有足够的权限写入“program files”。

这会导致混乱,因为所有模块都会进入%appdata%,当您升级NPM本身 - NPM自己建议您立即这样做 - 您会得到两份副本:仍在“program files”中的原始副本,因为NPM无法擦除它,以及在%appdata%中的新副本。

更糟糕的是,如果您错误地将NPM操作作为管理员执行(在Windows上比在*nix上容易得多),则它将在“program files”中的NPM node_modules上操作。可能会出现真正的混乱。

因此,当您运行安装程序时,只需将其指向%appdata%,就可以避免所有这些问题。

请注意,这并不奇怪 - 如果您以普通用户权限运行安装程序,这就是所发生的事情。


2

您需要以管理员身份运行安装程序。

  1. 以管理员身份运行命令提示符
  2. 进入包含msi文件的目录
  3. 在命令提示符中输入文件名启动msi文件
  4. 您将会看到所有节点命令都可以从新的命令提示符中正常工作

2

我曾经遇到过同样的问题,我采取的解决方法是在安装node.js时关闭我的反病毒保护10分钟左右,这个方法非常有效。


1
你需要修改AppData的原因可能是:
  1. Node.js无法处理超过256个字符的路径,而Windows往往具有非常长的路径。
  2. 如果您是从公司环境登录的,则您的AppData可能在服务器上 - 这将无法正常工作。npm目录必须位于本地驱动器中。
即使这样做了,最新的LTE(4.4.4)仍然在Windows 10上存在问题,它在短时间内可以工作,但每当我尝试时:
$ npm install _some_package_ --global 

节点抛出“FATAL ERROR CALL_AND_RETRY_LAST Allocation failed - process out of memory”错误。仍在尝试找到解决该问题的方法。
我发现唯一有效的方法是运行Vagrant或Virtual Box,然后运行Linux命令行(必须匹配路径),这是一个相当混乱的解决方案。

1

我需要删除 \program files 中的 nodejs 文件夹,然后再通过 msi 安装程序进行安装。似乎当我卸载 Node 时它并没有实际删除这个文件。


0

我曾经遇到过同样的问题,但是在尝试了这篇文章中所有的方法都无法解决后,我只好重启电脑。 所以如果你在安装后还没有尝试过重新启动电脑,请试一试。

安装后请重启电脑


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接