【问题标题】:"Error: spawn git ENOENT" when running react-scripts test运行 react-scripts 测试时出现“错误:生成 git ENOENT”
【发布时间】:2017-09-24 05:06:16
【问题描述】:

我有一个使用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' 文件夹,然后从副本中运行测试,它们都运行良好。

【问题讨论】:

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


    【解决方案1】:

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

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

    Source

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

    jest项目中还有一个open bug:https://github.com/facebook/jest/issues/3214

    【讨论】:

      猜你喜欢
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 2020-02-20
      相关资源
      最近更新 更多