Node.js &引用;错误:spawn git enoint“;运行react脚本测试时

Node.js &引用;错误:spawn git enoint“;运行react脚本测试时,node.js,git,reactjs,npm,react-scripts,Node.js,Git,Reactjs,Npm,React Scripts,我有一个使用createreact应用程序创建的项目。当我第一次创建项目时,测试运行良好。在一段时间没有运行测试之后,我决定运行这些测试(我仍然没有编写任何测试,所以生成的测试类就是我的全部),现在我得到了以下错误: Determining test suites to run...Error: spawn git ENOENT at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32) at

我有一个使用
createreact应用程序创建的项目。当我第一次创建项目时,测试运行良好。在一段时间没有运行测试之后,我决定运行这些测试(我仍然没有编写任何测试,所以生成的测试类就是我的全部),现在我得到了以下错误:

Determining test suites to run...Error: spawn git ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
    at onErrorNT (internal/child_process.js:344:16)
    at nextTickCallbackWith2Args (node.js:442:9)
    at process._tickCallback (node.js:356:17)
Git肯定在正确的路径上,我可以从命令行运行
Git--version
,它会按预期输出。如果在cygwin或windows命令行中运行,则会出现相同的错误

My package.json看起来像:

{
  "name": "my-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "immutable": "^3.8.1",
    "react": "^15.5.4",
    "react-dom": "^15.5.4"
  },
  "devDependencies": {
    "react-scripts": "0.9.5"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}

编辑:经过一番尝试后,我发现只有当项目位于git存储库中时,我的测试才会失败。如果我在没有“.git”文件夹的情况下获取项目的副本,然后从副本中运行测试,它们都可以正常运行。

我最终找到了导致此问题的原因。当git作为Jest watcher的一部分启动时,我的本地设置导致了一个错误(仍然不清楚是什么)。从创建应用程序文档:

默认情况下,当您运行npm测试时,Jest将只运行与自上次提交以来更改的文件相关的测试。这是一种优化,旨在使您的测试无论有多少测试都能快速运行。但是,它假设您不经常提交未通过测试的代码

运行测试时,就像它们在CI环境中运行一样,使用
set CI=true&&npm test
绕过git功能,我可以运行测试

jest项目中还有一个开放的bug: