所有npm命令都给出相同的错误(ENOENT)

时间:2017-12-24 16:14:24

标签: javascript node.js windows npm

我使用Windows 8.1 x64进行所有更新。

我正在使用nodejs 8.9.1 - 我在命令" npm -v"上发生错误。

所以我卸载了这个版本并安装了8.9.3。它在命令上给了我同样的错误 然后我卸载了8.9.3并使用这个答案清理所有路径; https://stackoverflow.com/a/20711410/1143249 然后安装新版本9.3.0 ...

但是,我仍然在所有npm命令中得到同样的错误 我错过了什么?我该如何解决这个问题?

C:\Users\UserName\Desktop>npm -v
Error: spawn C:\Program Files\nodejs\node.exe ENOENT
    at _errnoException (util.js:999:13)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:201:19)
    at onErrorNT (internal/child_process.js:389:16)
    at process._tickCallback (internal/process/next_tick.js:152:19)
    at Function.Module.runMain (module.js:703:11)
    at startup (bootstrap_node.js:194:16)
    at bootstrap_node.js:618:3
C:\Program Files\nodejs\node_modules\npm\lib\npm.js:51
      throw new Error('npm.load() required')
      ^

Error: npm.load() required
    at Object.get (C:\Program Files\nodejs\node_modules\npm\lib\npm.js:51:13)
    at process.errorHandler (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js:205:18)
    at process.emit (events.js:159:13)
    at process._fatalException (bootstrap_node.js:387:26)
5.5.1

events.js:136
      throw er; // Unhandled 'error' event
      ^

Error: spawn C:\Program Files\nodejs\node.exe ENOENT
    at _errnoException (util.js:999:13)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:201:19)
    at onErrorNT (internal/child_process.js:389:16)
    at process._tickCallback (internal/process/next_tick.js:152:19)
    at Function.Module.runMain (module.js:703:11)
    at startup (bootstrap_node.js:194:16)
    at bootstrap_node.js:618:3

更新
每次我卸载nodejs,清理/删除文件夹并尝试这些版本;
- node-v9.3.0-x64无法正常工作
- node-v8.9.3-x64不工作
- node-v8.9.1-x64无法正常工作
- node-v8.9.0-x64无法正常工作
- node-v7.10.0-x64显示版本号也是一个小错误 这是输出;

C:\Users\UserName\Desktop>npm -v
5.6.0

events.js:163
      throw er; // Unhandled 'error' event
      ^

Error: spawn C:\Program Files\nodejs\node.exe ENOENT
    at exports._errnoException (util.js:1050:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
    at onErrorNT (internal/child_process.js:367:16)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
    at Module.runMain (module.js:607:11)
    at run (bootstrap_node.js:427:7)
    at startup (bootstrap_node.js:151:9)
    at bootstrap_node.js:542:3

更新
我卸载了Avg防病毒保护并安装了node-v6.12.3-x64.msi。我还有问题,一个例子;我不能像以前那样运行命令; Node v6.12.3 on Windows 8.1 x64

上次更新
感谢所有答案(直到此日期:10.02.2018 03:30 PM GTM + 3)
(我已经用 vm windows 完成了我的一些工作,直到这个日期,但现在我感到悲伤的消息。)
我跑出了所有选项,我还有很多工作要做npm包。 因此,我已经格式化了我的机器并替换为Windows 10 Enterprise x64。 我现在无法尝试新的答案,但这是我所学到的金点; 如果你有像ci-build(jenkins等)或者 如果你没有多台电脑(并且vm不是一个选项) 只是不时完全备份您的驱动器,因为您永远不会知道 您的计算机软件(如node-npm)可能会产生一些有趣的错误。这就是我学到的,只是说......

7 个答案:

答案 0 :(得分:1)

  

解决方法是确保C:\ Users \ {user} \ AppData \ Roaming \ npm存在并且可以使用普通用户帐户写入。

请参阅Troubleshooting

答案 1 :(得分:1)

虽然在Windows 8上没有测试过Node,但我建议你完全摆脱AppData文件夹下的npm安装。您可以使用Node版本管理器来实现此目的。我推荐Nodist。您也可以在版本之间轻松切换。

使用Nodist,你可以这样运行命令:

 nodist 6.2.10

我怀疑的一点是Node运行时对C:/驱动器下所需文件的有限访问 - 可能与Windows 8有关。也就是说,您可以在C:/以外的任何驱动器中安装nodist。同时如@fjoe所述,坚持使用LTS版本,特别是v6.x.x

答案 2 :(得分:0)

在选择node.js版本时,需要考虑以下几点。

标记为LTS(长期支持)的版本是他们支持的版本。

您可以看到完整的版本列表here,注意LTS列。看到随每个版本打包的V8npm版本也很有趣。

  • 节点9. *没有正式的LTS版本。
  • 节点8. *于10-31-2017(3个月前)正式进入LTS。
    • 我个人遇到了问题。
  • 节点7. *从未正式发布为LTS。
  • 节点6. *有2年的官方LTS版本,他们将继续支持它。
    • 最新发布于01-02-2018。

根据这些信息,我建议您尝试久经考验的长期支持version 6.*

如果这样可行,那么可能会推迟版本8. *直到更多事情被解决。

其他人对您关于nodenpm的环境变量的问题发表了评论。这显然不是问题,因为命令被识别并运行(但它们是错误的)。

另外,我建议您按照此完整卸载指南进行操作:How to completely remove node.js from Windows

答案 3 :(得分:0)

我的编码伙伴昨天也有类似的错误,尽管在Linux上。

错误发生在node_modules文件夹中,因此删除它并重新安装节点为他解决了这个问题。

这将是AppData \ Roaming \ npm中的node_module文件夹。

答案 4 :(得分:0)

我想问题可能在NPM本身。 尝试更新您的NPM。

尝试使用这个伟大的approach

顺便说一下,知道你对node.js版本的更改有什么样的npm版本真是太棒了。

答案 5 :(得分:0)

从您提供的日志中看起来像缓存错误,因为之前存在一些垃圾而导致问题。

使用管理员权限打开命令提示符,然后按照以下步骤操作:

1)清除缓存:npm cache clean --force。您还可以运行npm cache verify

2)使用以下内容删除node_modules文件夹:rm -rf node_modules

3)删除任何package-lock.json文件。

4)删除.npm目录。

5)删除以下目录:

   5.1) C:\Users\<username>\AppData\Roaming\npm\. 

   5.2) C:\Users\<username>\AppData\Roaming\npm-cache.

6)另外,请尝试设置环境变量:

C:\Users\<username>\AppData\Roaming\npm;C:\Program Files\nodejs

输入命令行:which npm

也许您没有设置系统值:NODE_PATH它应该指向您的全局模块位置。

7)使用npm i -g npm@latest更新到最新的npm。

希望上述技巧可以解决您的问题。

感谢。

答案 6 :(得分:0)

我想在安装Node.js时,由于许可,它无法设置它的环境路径。

您需要手动将节点路径配置到环境变量中。