首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置testing-library/react,使用mocha Set :意外的令牌

设置testing-library/react,使用mocha Set :意外的令牌
EN

Stack Overflow用户
提问于 2020-12-06 10:41:28
回答 1查看 913关注 0票数 2

我正在用mocha设置testing library/react。我在安装过程中遇到了很多问题,这些问题都是通过安装babel库并在.babelrc文件中配置它们来解决的,如本问题最下面部分所述。现在,我陷入了这个错误:

代码语言:javascript
复制
> mocha --exit --require @babel/register --require jsdom-global/register
D:\projects\demo_app\node_modules\antd\es\row\index.js:1
(function (exports, require, module, __filename, __dirname) { import { Row } from '../grid';
                                                                     ^

SyntaxError: Unexpected token {
    at new Script (vm.js:79:7)
    at createScript (vm.js:251:10)
    at Object.runInThisContext (vm.js:303:10)
    at Module._compile (internal/modules/cjs/loader.js:657:28)

这来自使用上述语法的ant.design组件。我试着测试一个虚拟组件,如下所示:

代码语言:javascript
复制
const component = () => (<div>hello</div>)

而且它没有任何问题。但是,每当我导入需要使用ant设计进行测试的实际组件时,我都会收到上面的错误。是不是巴别塔的安装部件配置不正确?我不知道如何修复这个错误。不知何故,我猜测它可能与babel预设或插件有关。

附注:我的项目使用的是Create React App,与Jest完全相同的测试运行得很顺利,但出于某种原因,我不想使用jest。

下面是.babelrc

代码语言:javascript
复制
{
  "presets": [
    ["@babel/preset-env",
      {
        "targets": {
          "esmodules": true,
          "node": "current"
        }
      }
    ],
    ["@babel/preset-react"]
  ],
  "plugins": [
    ["@babel/plugin-proposal-class-properties"],
    ["module-resolver", {
      "root": ["./src"],
      "alias": {
        "underscore": "lodash"
      }
    }]
  ]
}

下面是package.json

代码语言:javascript
复制
{
  "dependencies": {
    "antd": "^4.4.2",
    "axios": "^0.19.2",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "react-google-oauth": "^1.0.0",
    "react-icons": "^3.10.0",
    "react-redux": "^7.1.3",
    "react-router-dom": "^5.1.2",
    "react-scripts": "3.3.1",
    "recompose": "^0.30.0",
    "redux": "^4.0.5",
    "redux-thunk": "^2.3.0",
    "styled-components": "^5.0.1",
    "validator": "^13.1.17"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "mocha --exit --require @babel/register --require jsdom-global/register",
    "test:jest": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@babel/core": "7.12.9",
    "@babel/plugin-proposal-class-properties": "7.12.1",
    "@babel/preset-env": "^7.12.7",
    "@babel/preset-react": "7.12.7",
    "@babel/register": "7.12.1",
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.5.0",
    "@testing-library/user-event": "^7.2.1",
    "babel-eslint": "10.1.0",
    "babel-plugin-module-resolver": "^4.0.0",
    "chai": "4.2.0",
    "enzyme": "^3.11.0",
    "enzyme-adapter-react-16": "^1.15.2",
    "eslint-plugin-flowtype": "^3.13.0",
    "eslint-plugin-import": "^2.20.1",
    "husky": "^4.2.1",
    "jsdom": "^16.4.0",
    "jsdom-global": "^3.0.2",
    "mocha": "8.2.1",
    "msw": "^0.19.5",
    "react-test-renderer": "^16.13.1",
    "redux-mock-store": "^1.5.4",
    "standard": "^14.3.1"
  },
  "optionalDependencies": {
    "fsevents": "^2.1.2"
  },
  "standard": {
    "parser": "babel-eslint",
    "ignore": [
      "/public"
    ]
  },
  "jest": {
    "transformIgnorePatterns": [
      "node_modules/?!(react)/"
    ]
  },
  "extends": [
    "eslint:recommended",
    "plugin:react/recommended"
  ]
}

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-12-06 18:59:50

你有强制Babel使用ES模块的"esmodules": true。这意味着如果您使用Node,它需要支持ES模块,并且您需要将测试放在.mjs文件中,或者将"type": "module"放在package.json中。如果不支持此功能,或者您希望支持较旧的节点版本,请从您的Babel配置中删除"esmodules": true以启用与CJS模块的兼容性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65164157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档