Jest 在 React 应用程序中遇到了意外的令牌

问题描述 投票:0回答:1

我正在尝试运行该应用程序的测试用例。但它显示以下错误。有人可以帮我解决这个问题吗?

附上代码仓库。 https://github.com/Arun12Muralidharan/team_tracker

无法修改package.json,Test/* test*js,*sh

它使用以下node和npm版本,在web ide(执行部分) $ node -v v8.15.1 $ npm -v 6.4.1

失败 src/Tests/AddMember.test.js ● 测试套件运行失败

Jest encountered an unexpected token

This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.

By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".

Here's what you can do:
 • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
 • If you need a custom transformation specify a "transform" option in your config.
 • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.

You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/en/configuration.html

Details:

/projects/challenge/node_modules/cheerio/dist/commonjs/api/attributes.js:300
        catch {
              ^

SyntaxError: Unexpected token {

  4 | // learn more: https://github.com/testing-library/jest-dom
  5 | // import '@testing-library/jest-dom/extend-expect';
> 6 | import { configure } from "enzyme";
    | ^
  7 | import Adapter from "enzyme-adapter-react-16";
  8 | configure({ adapter: new Adapter() });
  9 |

  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:537:17)
  at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:579:25)
  at Object.<anonymous> (node_modules/cheerio/src/cheerio.ts:6:1)
  at Object.<anonymous> (node_modules/cheerio/src/load.ts:7:1)
  at Object.<anonymous> (node_modules/cheerio/src/load-parse.ts:1:1)
  at Object.<anonymous> (node_modules/cheerio/src/index.ts:6:1)
  at Object.<anonymous> (node_modules/enzyme/src/Utils.js:9:1)
  at Object.<anonymous> (node_modules/enzyme/src/ReactWrapper.js:4:1)
  at Object.<anonymous> (node_modules/enzyme/src/index.js:1:1)
  at Object.<anonymous> (src/setupTests.js:6:1)
      at Array.forEach (<anonymous>)

失败 src/Tests/Login.test.js ● 测试套件运行失败

Jest encountered an unexpected token

This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.

By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".

Here's what you can do:
 • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
 • If you need a custom transformation specify a "transform" option in your config.
 • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.

You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/en/configuration.html

Details:

/projects/challenge/node_modules/cheerio/dist/commonjs/api/attributes.js:300
        catch {
              ^

SyntaxError: Unexpected token {

  4 | // learn more: https://github.com/testing-library/jest-dom
  5 | // import '@testing-library/jest-dom/extend-expect';
> 6 | import { configure } from "enzyme";
    | ^
  7 | import Adapter from "enzyme-adapter-react-16";
  8 | configure({ adapter: new Adapter() });

  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:537:17)
  at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:579:25)
  at Object.<anonymous> (node_modules/cheerio/src/cheerio.ts:6:1)
  at Object.<anonymous> (node_modules/cheerio/src/load.ts:7:1)
  at Object.<anonymous> (node_modules/cheerio/src/load-parse.ts:1:1)
  at Object.<anonymous> (node_modules/cheerio/src/index.ts:6:1)
  at Object.<anonymous> (node_modules/enzyme/src/Utils.js:9:1)
  at Object.<anonymous> (node_modules/enzyme/src/ReactWrapper.js:4:1)
  at Object.<anonymous> (node_modules/enzyme/src/index.js:1:1)
  at Object.<anonymous> (src/setupTests.js:6:1)
      at Array.forEach (<anonymous>)
javascript reactjs jestjs enzyme ts-jest
1个回答
0
投票

简而言之,发生这种情况是因为从 Cheerio v1.0.0 开始,该项目已切换到 ES 模块,并且

enzyme
与此版本不兼容。将其添加到您的 package.json 应该可以工作:

"overrides": {
    "enzyme": {
      "cheerio": "1.0.0-rc.3"
    }
  }
© www.soinside.com 2019 - 2024. All rights reserved.