【问题标题】:Jest error Unexpected token ... (ES6)开玩笑错误意外的令牌...(ES6)
【发布时间】:2018-04-04 05:53:47
【问题描述】:

每当我在命令行中运行 jest 时都会收到以下错误:

 ● Test suite failed to run

/Users/<USER>/<Project>/src/login/LoginAPI.js:13
        ...headers,
        ^^^

SyntaxError: Unexpected token ...

它中断的代码使用 ES6 省略号:

headers: {
    ...headers
},

这是我的 .babelrc 文件的样子:

{ "presets":["env", "react"] }

这就是我的 package.json 中的内容:

"dependencies": {
    "express": "^4.15.4",
    "express-healthcheck": "^0.1.0",
    "js-cookie": "^2.1.4",
    "normalize.css": "^7.0.0",
    "query-string": "^5.0.0",
    "react": "^15.6.1",
    "react-dom": "^15.6.1",
    "react-router-dom": "^4.2.2"
  },
  "devDependencies": {
    "babel-jest": "^21.2.0",
    "babel-preset-env": "^1.6.1",
    "babel-preset-es2015": "^6.24.1",
    "enzyme": "^3.1.0",
    "enzyme-adapter-react-15": "^1.0.2",
    "jest": "^21.2.1",
    "jest-cli": "^21.2.1",
    "react-scripts": "1.0.10"
  },
  "jest": {
    "moduleNameMapper": {
      "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
      "\\.(css|less)$": "<rootDir>/__mocks__/styleMock.js"
    },
    "moduleFileExtensions": ["js"],
    "moduleDirectories": [
      "node_modules",
      "bower_components",
      "shared"
    ],
    "testPathIgnorePatterns": [
      "/node_modules/",
      "/yarn-cache/"
    ]
  }

【问题讨论】:

  • 我认为你需要对象扩展运算符插件。
  • 这不是您正在使用的 ES6 功能,对象扩展运算符甚至还没有在语言中,只是第 3 阶段。您可能已经习惯了允许它但它不起作用的 jsx默认在js中
  • @Axnyff - 哦,我以为它是 ES6 的一部分。那么这是否意味着我需要将 stage3 添加到我的 .babelrc 中?

标签: javascript reactjs unit-testing ecmascript-6 jestjs


【解决方案1】:

您需要为此语法使用特定的 babel 预设。 Check this preset

npm install --save-dev babel-plugin-transform-object-rest-spread

然后将它添加到你的 .babelrc

{
  "plugins": ["transform-object-rest-spread"]
}

您可能想要添加stage-2,因为它有更多的 ES6 好东西。

注意:Jest can read your .babelrc file

【讨论】:

    【解决方案2】:

    在通天塔 7 中, babel-plugin-transform-object-rest-spread会报错:SpreadProperty has been renamed to SpreadElement

    所以我使用:

    npm install --save-dev @babel/plugin-proposal-object-rest-spread
    

    和配置.babelrc

    {
      "plugins": ["@babel/plugin-proposal-object-rest-spread"]
    }
    

    【讨论】:

      【解决方案3】:

      我相信有几种解决方案,GitHub Issue 应该概述其中的一些。我会先尝试一下:

       {
         "presets": ["es2015", "stage-3", "react"]
       }
      

      【讨论】:

        【解决方案4】:

        在你的 package.json 中添加 "schema-utils": "2.6.6" 作为 "dependencies"

        "schema-utils": "2.6.6",
        

        【讨论】:

          猜你喜欢
          • 2018-01-15
          • 2018-01-12
          • 1970-01-01
          • 1970-01-01
          • 2018-08-04
          • 2021-10-28
          • 2017-09-13
          • 2019-03-10
          • 1970-01-01
          相关资源
          最近更新 更多