开玩笑错误意外的令牌...(ES6)

Posted

技术标签:

【中文标题】开玩笑错误意外的令牌...(ES6)【英文标题】:Jest error Unexpected token ... (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 中? 【参考方案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",

【讨论】:

以上是关于开玩笑错误意外的令牌...(ES6)的主要内容,如果未能解决你的问题,请参考以下文章

开玩笑:测试套件无法运行,意外令牌 =

简单的 Webpack + React + ES6 + babel 示例不起作用。意外的令牌错误

开玩笑 使用 d3 时意外的令牌“导出”

用 Jest 测试 Vue 失败,Jest 遇到了意外的令牌,SyntaxError: Unexpected token import

意外的令牌导入(webpack es6)

开玩笑设置“SyntaxError:意外的令牌导出”