Jest 错误:意外标记符号...(ES6)

4
每次在命令行中运行jest时,我都会遇到以下错误提示:
 ● Test suite failed to run

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

SyntaxError: Unexpected token ...

它中断的代码使用了ES6省略号:
headers: {
    ...headers
},

这是我的 .babelrc 文件的内容:

这是我的 .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/"
    ]
  }

2
我认为你需要使用对象扩展运算符插件。 - evolutionxbox
这不是您正在使用的 ES6 功能,对象展开运算符甚至还没有被纳入该语言,仅处于第3阶段。您可能已经习惯了允许它的 jsx,但在js中默认情况下它不起作用。 - Axnyff
{btsdaf} - aditi
4个回答

4
您需要使用特定的Babel预设来处理此语法。请参考这个预设
npm install --save-dev babel-plugin-transform-object-rest-spread

然后将以下内容添加到您的 .babelrc 文件中

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

你可能想添加 stage-2,因为它具有更多ES6的好处。 注意: Jest可以读取你的.babelrc文件

3
在Babel 7中,babel-plugin-transform-object-rest-spread会报错:SpreadProperty已更名为SpreadElement。因此我使用:
npm install --save-dev @babel/plugin-proposal-object-rest-spread

并配置 .babelrc 文件

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

1

我相信有几种解决方案,这个GitHub Issue应该概述了其中一些。我建议先尝试这个:

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

0
在你的 package.json 文件中将 "schema-utils": "2.6.6" 添加为 "dependencies"。
"schema-utils": "2.6.6",

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接