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

mxg2im7a  于 2022-12-03  发布在  Node.js
关注(0)|答案(1)|浏览(118)

概述

我正在尝试解决为什么无法通过npm run命令运行package.json文件中定义的scripts的问题。每个脚本命令都返回相同的错误消息:
npm错误!代码枚举
npm ERR!系统调用派生bash
npm错误!路径C:\Temp\test4
npm错误!错误号-4058
npm ERR!enoent生成bash ENOENT
npm ERR!enoent这与npm无法找到文件有关。
npm错误!通知

最少再现步骤

我从我的Windows 11机器上的Node Download Page安装了NodeJS 18.12.1 x64 MSI。
我创建了一个空目录(在我的示例中称为test 4),其中包含一个名为package.json的文件,其内容如下:

{
  "scripts": {
    "hello": "echo 'Hello World'"
  }
}

我以管理员身份在上面列出的package.json文件所在的文件夹中打开了一个PowerShell窗口。
执行npm run hello会产生上述错误消息。

详细/愚蠢的日志记录结果

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

预期行为

我让一位同事尝试了同样的步骤,他能够得到我预期的结果:

我已经尝试过的事情

  • this StackOverflow answer之后完全卸载NodeJs/NPM
  • 安装不同版本的NodeJS/NPM。(我尝试了2/3不同的版本)
  • 在我上面的简单package.json文件和我的一个项目中的一个“真实的”package.json文件上运行npm install。两个项目都成功安装。
  • 查看了错误消息中提到的日志文件,该文件引用了AppData文件夹。(它的内容与我上面提供的详细错误屏幕截图相同)
f3temu5u

f3temu5u1#

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

在我的例子中,它被配置为使用bash,这就是发生错误的原因。
至于为什么/如何设置,我不确定。

相关问题