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

Posted

技术标签:

【中文标题】所有 npm 命令都给出相同的错误(ENOENT)【英文标题】:All npm commands giving same error (ENOENT) 【发布时间】:2018-06-06 07:53:22 【问题描述】:

我正在使用带有所有更新的 Windows 8.1 x64。

我使用的是 nodejs 8.9.1 - 我在命令“npm -v”上出错。 所以我卸载了这个版本并安装了 8.9.3。它在命令上给了我同样的错误。 然后我卸载了 8.9.3 并使用这个答案清理了所有路径; https://***.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。我还是有问题,举个例子;我无法运行类似的命令;

上次更新 感谢所有答案(直到此日期:10.02.2018 03:30 PM GTM+3) (到目前为止,我已经使用 vm windows 完成了一些工作,但现在我有一个不幸的消息。) 我用尽了所有选项,但我还有很多工作要做 npm 包。 因此,我已格式化我的机器并替换为 Windows 10 Enterprise x64。 我现在不能尝试新的答案,但这是我学到的黄金点; 如果您有任务关键型机器,例如 ci-build(jenkins 等)或 如果您没有超过一台计算机(并且 vm 不是一个选项) 只需不时完全备份您的驱动器,因为您永远不会知道 您的计算机软件(如 node - npm)可能会出现诸如此类的有趣错误。这就是我学到的,只是说......

【问题讨论】:

您是管理员吗?尝试使用 nvm for Windows 或 nvs 安装节点。 @gretro 感谢您的建议。我用管理员尝试了所有安装。我也试过 nvm - 没有运气。我仍然收到相同的错误消息。 还有其他版本可以使用吗?像 Node 6 之类的? 我只尝试了 3 个版本。 8.9.1、8.9.3 和 9.3.0。我还检查了我的防病毒和防火墙设置(一切似乎都很好)。 node -v 命令正在运行并提供版本号。但是 npm -v 命令总是给出这个(ENOENT)错误消息。我没有尝试 node v6,因为它会以某种方式更加混乱环境。我不知道。你推荐它吗?如果你真的觉得有帮助,我可以试试。 如果node -v 有效,而不是npm -v,这可能意味着您需要在变量环境中添加变量名称npm。你可以考虑这个answer 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

 nodist 6.2.10

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

【讨论】:

安装正常。但是当我输入 npm -v 时,类似的错误消息再次出现在屏幕上。对不起... 您是否将它安装在C:/以外的驱动器上? 不,我没有将 npm 安装到其他地方。 这就是为什么我建议在其他驱动器上执行此操作以确保问题的原因是驱动器 c:/ 对 Node 或 npm 的访问受限。【参考方案3】:

从您提供的日志来看,它看起来像是一个缓存错误,因为以前存在一些垃圾并导致问题。

以管理员权限打开命令提示符并按照以下步骤操作:

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

2) 使用rm -rf node_modules 删除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\&lt;username&gt;\AppData\Roaming\npm;C:\Program Files\nodejs.

在命令行中输入:which npm

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

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

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

谢谢。

【讨论】:

我已经这样做了。此外,由于错误,我无法运行“npm cache clean --force”之类的任何命令。【参考方案4】:

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

见Troubleshooting

【讨论】:

我卸载了所有安全程序(malwarebytes antimalware 和 avg)。然后重新启动 > 然后设置某些文件夹的读/写权限。还是不行。【参考方案5】:

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

尝试使用这个很棒的approach

顺便说一句,很高兴知道您更改了 node.js 版本后拥有的 npm 版本。

【讨论】:

使用这种方法会给出类似的错误信息。【参考方案6】:

我的编程伙伴昨天也遇到了类似的错误,虽然是在 Linux 上。

错误出现在 node_modules 文件夹中,因此删除该错误并重新安装 node 为他解决了这个问题。

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

【讨论】:

指定位置似乎不存在node.exe。您是否查看过文件夹 C:/Program Files/node/node.exe?如果是这样,请尝试将其移动到一个全新的位置并更改配置文件。【参考方案7】:

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

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

您可以看到完整的版本列表here 请注意 LTS 列。看看V8 和npm 各自打包的版本也很有趣。

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

鉴于此信息,我建议您尝试久经考验的长期支持 version 6.*

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

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

另外我建议您遵循这个完整的卸载指南:How to completely remove node.js from Windows

【讨论】:

感谢所有版本信息。我卸载并清理了所有路径。然后从您的链接安装 node-v6.12.3-x64.msi 。错误消息已更改。但我仍然有错误。如; C:\Users\Username\Desktop>npm -v 5.6.0 events.js:160 throw er; // 未处理的“错误”事件 ^ 错误:在 Process.ChildProcess._handle.onexit (internal/child_process.js :197:32) 在 onErrorNT (internal/child_process.js:376:16) ... @Lost_In_Library 您是否遵循了这样的完整 Windows 卸载指南? ***.com/a/20711410/6577822 对不起,我做到了 :( 运气不好。

以上是关于所有 npm 命令都给出相同的错误(ENOENT)的主要内容,如果未能解决你的问题,请参考以下文章

ENOENT:运行 npm install 命令时没有这样的文件或目录

npm start 问题(错误:spawn cmd ENOENT)

如何阅读 npm ENOENT 错误

npm 安装错误,错误为:ENOENT,chmod

npm 错误!代码 ENOENT,npm 错误!错误号 34

NPM:ENOENT:没有这样的文件或目录,重命名