【问题标题】:ReactJS - jest test error 'unexpected token ...'ReactJS - 开玩笑测试错误'意外的令牌......'
【发布时间】:2018-02-08 14:27:07
【问题描述】:

我在切换到笔记本电脑后尝试运行笑话测试。以前,在计算机上,每个测试都在启动并且没有返回语法/运行时错误,但现在当我尝试在笔记本电脑上运行它们时,它们返回错误:

C:\PROJECT_DIR\foo.test.js
      ...initialState,
      ^^^

SyntaxError: Unexpected token ...

  at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:318:17)

是什么原因造成的?我做了npm install,一切都安装好了,但我一直收到这个错误,即使它没有出现在以前的机器上。

这是测试:

import increments from '../increments'

const initialState = {
  goldBase: 0,
  goldMulti: 1,
  goldIncr: 0,
  coalBase: 0,
  coalMulti: 1,
  coalIncr: 0,
  ironBase: 0,
  ironMulti: 1,
  ironIncr: 0,
  stoneBase: 0,
  stoneMulti: 1,
  stoneIncr: 0,
  woodBase: 0,
  woodMulti: 1,
  woodIncr: 0,
  foodBase: 0,
  foodMulti: 1,
  foodIncr: 0
}

describe('increments', () => {
  it('should properly increment values of base increments', () =>  {
    const action = {
      type: 'INCREMENT',
      goldBase: 1,
      coalBase: 0.2,
      ironBase: 0.8,
      stoneBase: NaN,
      woodBase: undefined,
      foodBase: null
    };

    const testState = {
      ...initialState,
      coalBase: 0.1
    };

    const expectedState = {
      ...initialState,
      goldBase: 1,
      coalBase: 0.3,
      ironBase: 0.8,
    };
    expect(increments(testState, action)).toEqual(expectedState);
  });

这里是package.json:

 {
  "name": "foo",
  "version": "0.1.0",
  "description": "",
  "private": true,
  "dependencies": {
    "react": "^16.2.0",
    "react-dom": "^16.2.0",
    "react-redux": "^5.0.6",
    "react-scripts": "1.1.0",
    "redux": "^3.7.2"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "jest",
    "test:watch": "npm test -- --watch",
    "eject": "react-scripts eject"
  },
  "author": "",
  "license": "MIT",
  "homepage": "",
  "devDependencies": {
    "babel-jest": "^22.1.0",
    "babel-preset-es2015": "^6.24.1",
    "jest": "^22.1.4"
  },
  "babel": {
    "presets": [
      "es2015"
    ]
  }
}

【问题讨论】:

    标签: reactjs testing jestjs


    【解决方案1】:

    所以语法来自transform-object-rest-spread 插件,它是 babel 的一部分(我看到你有),但看起来你没有这个特定的插件。因此,无论使用什么 JS 引擎玩笑都可能不知道如何解释扩展 (...) 语法。

    尝试将插件添加到您的项目并启用它,然后看看它是否有效!

    【讨论】:

    • 谢谢!它确实解决了这项工作,尽管我仍然很好奇为什么会在一台计算机上不需要这样的插件行,而在另一台计算机上却解决了这个问题,您对此有什么见解吗?
    • 所以 jest 是与 NPM 一起安装的。要获得 NPM,你必须安装 node,因为 NPM 是 Node 的包管理器。然后节点提供了javascript“运行”的环境。基于此,我猜想两台计算机上节点的版本(以及chrome v8 javascript编译器的版本)是不同的。您可以通过在两台计算机上运行 node --version 来检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 2018-01-15
    • 2018-01-12
    • 2018-07-15
    • 2018-08-04
    • 2018-05-01
    • 2021-10-28
    相关资源
    最近更新 更多