运行react-scripts测试时出现“错误:生成git ENOENT”

时间:2017-04-26 16:53:22

标签: node.js git reactjs npm react-scripts

我有一个使用create-react-app创建的项目。当我第一次创建项目时,测试运行良好。我决定在没有运行它们一段时间后运行测试(我仍然没有写任何所以生成的测试类就是我所有的),现在我收到以下错误:

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命令行中运行,我会得到同样的错误。

我的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'文件夹,那么从副本运行测试它们都运行良好。

1 个答案:

答案 0 :(得分:3)

我最终弄明白造成这种情况的原因。当git作为Jest观察者的一部分启动时,我的本地设置有些问题导致错误(仍然不清楚是什么)。来自create-react-app文档:

  

默认情况下,当您运行npm test时,Jest将仅运行与上次提交后更改的文件相关的测试。这是一项优化,旨在使您的测试快速运行,无论您拥有多少测试。但是,它假定您不经常提交未通过测试的代码。

Source

运行测试就好像它们在set CI=true&&npm test的CI环境中运行一样绕过了git功能,我可以运行我的测试。 More information here

开玩笑项目中还有一个漏洞:https://github.com/facebook/jest/issues/3214