npm 测试在 Jenkins 中失败但在本地通过

npm test fails in Jenkins but passes in local

npm 测试失败

出现以下错误

FAIL src/Tests/Workflow.test.js
  ● Test suite failed to run

    ENOENT: no such file or directory, mkdir '/tmp/jest_4df/jest-transform-cache-4e6d562894209be60da269aa86f9333c-d1d5bfaad8659acd06069518d3e76e6c/48'

      at createDirectory (node_modules/jest-util/build/createDirectory.js:68:10)
      at ScriptTransformer._getFileCachePath (node_modules/@jest/transform/build/ScriptTransformer.js:306:37)
      at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:429:32)
      at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:569:40)
      at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:607:25)

FAIL src/Tests/app.test.js
  ● Test suite failed to run

    ENOENT: no such file or directory, mkdir '/tmp/jest_4df/jest-transform-cache-4e6d562894209be60da269aa86f9333c-d1d5bfaad8659acd06069518d3e76e6c/48'

      at createDirectory (node_modules/jest-util/build/createDirectory.js:68:10)
      at ScriptTransformer._getFileCachePath (node_modules/@jest/transform/build/ScriptTransformer.js:306:37)
      at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:429:32)
      at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:569:40)
      at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:607:25)

FAIL src/Tests/AuthenticationForm.test.js
  ● Test suite failed to run

    ENOENT: no such file or directory, mkdir '/tmp/jest_4df/jest-transform-cache-4e6d562894209be60da269aa86f9333c-d1d5bfaad8659acd06069518d3e76e6c/48'

      at createDirectory (node_modules/jest-util/build/createDirectory.js:68:10)
      at ScriptTransformer._getFileCachePath (node_modules/@jest/transform/build/ScriptTransformer.js:306:37)
      at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:429:32)
      at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:569:40)
      at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:607:25)

FAIL src/Tests/Authentication.test.js
  ● Test suite failed to run

    ENOENT: no such file or directory, mkdir '/tmp/jest_4df/jest-transform-cache-4e6d562894209be60da269aa86f9333c-d1d5bfaad8659acd06069518d3e76e6c/48'

      at createDirectory (node_modules/jest-util/build/createDirectory.js:68:10)
      at ScriptTransformer._getFileCachePath (node_modules/@jest/transform/build/ScriptTransformer.js:306:37)
      at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:429:32)
      at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:569:40)
      at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:607:25)

FAIL src/Tests/AuthenticationFormInputField.test.js
  ● Test suite failed to run

    ENOENT: no such file or directory, mkdir '/tmp/jest_4df/jest-transform-cache-4e6d562894209be60da269aa86f9333c-d1d5bfaad8659acd06069518d3e76e6c/48'

      at createDirectory (node_modules/jest-util/build/createDirectory.js:68:10)
      at ScriptTransformer._getFileCachePath (node_modules/@jest/transform/build/ScriptTransformer.js:306:37)
      at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:429:32)
      at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:569:40)
      at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:607:25)

FAIL src/Tests/UserInputForm.test.js
  ● Test suite failed to run

    ENOENT: no such file or directory, mkdir '/tmp/jest_4df/jest-transform-cache-4e6d562894209be60da269aa86f9333c-d1d5bfaad8659acd06069518d3e76e6c/48'

      at createDirectory (node_modules/jest-util/build/createDirectory.js:68:10)
      at ScriptTransformer._getFileCachePath (node_modules/@jest/transform/build/ScriptTransformer.js:306:37)
      at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:429:32)
      at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:569:40)
      at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:607:25)

FAIL src/Tests/UserInputFormField.test.js
  ● Test suite failed to run

    ENOENT: no such file or directory, mkdir '/tmp/jest_4df/jest-transform-cache-4e6d562894209be60da269aa86f9333c-d1d5bfaad8659acd06069518d3e76e6c/48'

      at createDirectory (node_modules/jest-util/build/createDirectory.js:68:10)
      at ScriptTransformer._getFileCachePath (node_modules/@jest/transform/build/ScriptTransformer.js:306:37)
      at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:429:32)
      at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:569:40)
      at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:607:25)

Test Suites: 7 failed, 7 total
Tests:       0 total
Snapshots:   0 total
Time:        3.251 s
Ran all test suites.
npm ERR! Test failed.  See above for more details.
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE

上述问题似乎是缓存中的问题。我尝试使用在堆栈溢出时给出的不同解决方案来解决它,但没有任何帮助。

我尝试使用以下方法解决它 -

在我的 package.json 我有这个

{
  "name": "123,
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.11.9",
    "@testing-library/react": "^11.2.5",
    "@testing-library/user-event": "^12.8.1",
    "http-proxy-middleware": "^1.0.6",
    "react": "^17.0.1",
    "react-csv": "^2.0.3",
    "react-dom": "^17.0.1",
    "react-loader-spinner": "^4.0.0",
    "react-promise-tracker": "^2.1.0",
    "react-scripts": "4.0.3",
    "react-select": "^4.1.0",
    "react-select-event": "^5.2.0",
    "react-test-renderer": "^17.0.1",
    "web-vitals": "^1.1.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "test:coverage": "react-scripts test --coverage",
    "test:update": "react-scripts test --updateSnapshot"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {}
}


我已经解决了这个问题。

Jenkins 使用的是 10.8.0 版本,在我的项目中 Jest 版本是 26。 Jest 26 不支持节点 <10.14.2.

您将不得不降级您的 jest 版本,否则您将不得不更改您的节点版本。