我在尝试在Windows 10上安装Node时遇到了一些问题并找到了解决方案 .
错误如下:
C:\ Users \ Stephan> npm错误:ENOENT,stat'C:\ Users \ Stephan \ AppData \ Roaming \ npm'
解决方案如下 .
Edit: 似乎新的安装程序不再出现此问题,请参阅this answer by Parag Meshram,因为我的答案现在可能已经过时了 .
Original answer:
密切关注以下步骤:
http://nodejs.org/download/下载64位版本,32是赶时髦的人
默认情况下,将其安装在任意位置: C:\Program Files\nodejs
C:\Program Files\nodejs
控制面板 - >系统 - >高级系统设置 - >环境变量
选择 PATH 并选择编辑它 .
PATH
如果PATH变量是 empty ,请将其更改为: C:\Users\{YOUR USERNAME HERE}\AppData\Roaming\npm;C:\Program Files\nodejs
empty
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
C:\Users\{YOUR USERNAME HERE}\AppData\Roaming\npm
;C:\Program Files\nodejs
如果PATH变量包含有关npm的信息,但没有任何关于npm的信息,请将其附加到PATH的末尾: ;C:\Users\{YOUR USERNAME HERE}\AppData\Roaming\npm;C:\Program Files\nodejs
;C:\Users\{YOUR USERNAME HERE}\AppData\Roaming\npm;C:\Program Files\nodejs
既然PATH变量设置正确,您仍会遇到错误 . 手动进入AppData目录,你会发现Roaming中没有npm目录 . 手动创建此目录 .
重新启动命令提示符,npm现在可以正常工作 .
去http://nodejs.org/
然后点击“下载...”按钮
这将'下载.msi(或.pkg for mac),它将为您执行所有安装和路径,与选定的答案不同 .
除了来自@StephanBijzitter的回答,我还会使用以下 PATH 变量:
%appdata%\npm %ProgramFiles%\nodejs
所以你的新 PATH 看起来像:
[existing stuff];%appdata%\npm;%ProgramFiles%\nodejs
这具有以下优点:依赖于用户,也不依赖于32/64位 .
新安装程序(从https://nodejs.org下载的.msi)具有"Add to PATH"选项 . 默认情况下,它已被选中 . 确保你选中它 .
您应该以管理员身份运行安装程序 .
以管理员身份运行命令提示符
cd目录,其中存在msi文件
通过在命令提示符中键入名称来启动msi文件
您应该很高兴看到所有节点命令都可以在新命令提示符shell中运行
我有同样的问题,有什么帮助我们在安装节点时将我的反病毒保护转换为10分钟,它就像一个魅力 .
一切都应安装在%appdata%(C:\ Users \ AppData \ Roaming)中,而不是“程序文件” .
这就是为什么......
默认的MSI安装程序将节点及其附带的NPM放入“程序文件”并将其添加到系统路径,但它将NPM的用户路径设置为%appdata%(c:\ users [username] \ appdata \ roaming )因为用户没有足够的权限来写入“程序文件” .
这会造成一个混乱,因为所有模块都进入%appdata%,当你升级NPM本身 - NPM自己建议你马上做 - 你最终得到两个副本:原始仍然在'程序文件',因为NPM无法擦除那个,和新的一个%%appdata% .
更糟糕的是,如果您错误地以管理员身份执行NPM操作(在Windows上更容易,然后在* nix上),那么它将在NPM node_modules的“程序文件”副本上运行 . 可能是一个真正的烂摊子 .
因此,当您运行安装程序时,只需将其指向%appdata%并避免所有这些 .
请注意,这并不是什么奇怪的事情 - 如果您只使用用户权限运行安装程序会发生什么 .
您必须修改AppData的原因可能是:
Node.js无法处理超过256个字符的路径,窗口往往具有很长的PATH .
如果您从公司环境登录,您的AppData可能在服务器上 - 这将无效 . npm目录必须位于本地驱动器中 .
即使这样做,最新的LTE(4.4.4)仍然存在Windows 10的问题,它工作了一段时间,然后每当我尝试:
$ npm install _some_package_ --global
节点抛出“FATAL ERROR CALL_AND_RETRY_LAST分配失败 - 进程内存不足”错误 . 仍然试图找到解决该问题的方法 .
我发现唯一有用的是运行Vagrant或Virtual box,然后运行Linux命令行(必须匹配路径),这是一个非常混乱的解决方案 .
8 回答
Edit: 似乎新的安装程序不再出现此问题,请参阅this answer by Parag Meshram,因为我的答案现在可能已经过时了 .
Original answer:
密切关注以下步骤:
http://nodejs.org/download/下载64位版本,32是赶时髦的人
默认情况下,将其安装在任意位置:
C:\Program Files\nodejs
控制面板 - >系统 - >高级系统设置 - >环境变量
选择
PATH
并选择编辑它 .如果PATH变量是
empty
,请将其更改为: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的信息,但没有任何关于npm的信息,请将其附加到PATH的末尾:
;C:\Users\{YOUR USERNAME HERE}\AppData\Roaming\npm;C:\Program Files\nodejs
既然PATH变量设置正确,您仍会遇到错误 . 手动进入AppData目录,你会发现Roaming中没有npm目录 . 手动创建此目录 .
重新启动命令提示符,npm现在可以正常工作 .
去http://nodejs.org/
然后点击“下载...”按钮
这将'下载.msi(或.pkg for mac),它将为您执行所有安装和路径,与选定的答案不同 .
除了来自@StephanBijzitter的回答,我还会使用以下
PATH
变量:所以你的新
PATH
看起来像:这具有以下优点:依赖于用户,也不依赖于32/64位 .
新安装程序(从https://nodejs.org下载的.msi)具有"Add to PATH"选项 . 默认情况下,它已被选中 . 确保你选中它 .
您应该以管理员身份运行安装程序 .
以管理员身份运行命令提示符
cd目录,其中存在msi文件
通过在命令提示符中键入名称来启动msi文件
您应该很高兴看到所有节点命令都可以在新命令提示符shell中运行
我有同样的问题,有什么帮助我们在安装节点时将我的反病毒保护转换为10分钟,它就像一个魅力 .
一切都应安装在%appdata%(C:\ Users \ AppData \ Roaming)中,而不是“程序文件” .
这就是为什么......
默认的MSI安装程序将节点及其附带的NPM放入“程序文件”并将其添加到系统路径,但它将NPM的用户路径设置为%appdata%(c:\ users [username] \ appdata \ roaming )因为用户没有足够的权限来写入“程序文件” .
这会造成一个混乱,因为所有模块都进入%appdata%,当你升级NPM本身 - NPM自己建议你马上做 - 你最终得到两个副本:原始仍然在'程序文件',因为NPM无法擦除那个,和新的一个%%appdata% .
更糟糕的是,如果您错误地以管理员身份执行NPM操作(在Windows上更容易,然后在* nix上),那么它将在NPM node_modules的“程序文件”副本上运行 . 可能是一个真正的烂摊子 .
因此,当您运行安装程序时,只需将其指向%appdata%并避免所有这些 .
请注意,这并不是什么奇怪的事情 - 如果您只使用用户权限运行安装程序会发生什么 .
您必须修改AppData的原因可能是:
Node.js无法处理超过256个字符的路径,窗口往往具有很长的PATH .
如果您从公司环境登录,您的AppData可能在服务器上 - 这将无效 . npm目录必须位于本地驱动器中 .
即使这样做,最新的LTE(4.4.4)仍然存在Windows 10的问题,它工作了一段时间,然后每当我尝试:
节点抛出“FATAL ERROR CALL_AND_RETRY_LAST分配失败 - 进程内存不足”错误 . 仍然试图找到解决该问题的方法 .
我发现唯一有用的是运行Vagrant或Virtual box,然后运行Linux命令行(必须匹配路径),这是一个非常混乱的解决方案 .