NPM - ENOENT 系统调用spawn bash(这与npm 无法找到文件有关)

Jos*_*ltz 5 node.js npm

概述

我正在尝试解决为什么无法通过npm runscripts命令运行文件中定义的问题。每个脚本命令都会返回相同的错误消息:package.json

npm 错误!代码 ENOENT
npm 错误!系统调用spawn bash
npm 错误!路径 C:\Temp\test4
npm 错误!errno -4058
npm 错误!enoent 生成 bash ENOENT
npm 错误!enoent 这与 npm 找不到文件有关。
npm 错误!埃诺恩特

最少的重现步骤

我从 Windows 11 计算机上的节点下载页面安装了 NodeJS 18.12.1 x64 MSI 。

我创建了一个空目录(在我的示例中称为test4),其中包含一个名为package.json以下内​​容的文件:

{
  "scripts": {
    "hello": "echo 'Hello World'"
  }
}
Run Code Online (Sandbox Code Playgroud)

我以管理员身份在与上面列出的文件相同的文件夹中打开了 PowerShell 窗口package.json

运行npm run hello会生成上述错误消息。

详细/愚蠢的记录结果

我使用的一种故障排除技术是启用愚蠢的日志记录来记录尽可能多的详细信息。该命令 ( ) 的结果npm run hello -ddd如下:

详细日志记录的屏幕截图

预期行为

我有一位同事尝试了同样的步骤,他能够得到我预期的结果: 命令工作截图

我已经尝试过的事情

  • 按照此 StackOverflow 答案完全卸载 NodeJs/NPM

  • 安装不同版本的 NodeJS/NPM。(我尝试了2/3个不同的版本)

  • npm install在上面的简单文件和我的项目之一的package.json“真实”文件上运行。package.json两个项目都安装成功。

  • 查看错误消息中提到的涉及 AppData 文件夹的日志文件。(它与我上面提供的详细错误屏幕截图的内容相同)

Jos*_*ltz 9

运行npm config list并检查是否script-shell已设置:

npm 配置列表结果

就我而言,它被配置为使用bash,这就是发生错误的原因。要解决此问题,只需运行以下命令即可删除配置设置npm config delete script-shell

至于为什么/如何设置,我不确定。

  • 天啊,由于这个错误,我一个月无法使用 npm,谢谢 (2认同)