Mocha为ES6对象扩展运算符抛出意外的令牌错误

时间:2016-05-10 15:31:06

标签: mocha babeljs

当我运行mocha时,如果我在我的app中使用对象扩展运算符,它会突然中断Unexpected token错误:

SyntaxError: ../app/middleware/api.js: Unexpected token (30:13)
  28 |
  29 |   // Dispatch beginning action
> 30 |   dispatch({ ...payload, type: startAction });

Object.assign替换它可以解决问题。我已将transform-object-rest-spread插件包含在webpack.config.js文件中,如下所示:

  module: {
    loaders: [{
      test: /\.js?$/,
      exclude: /(node_modules|bower_components)/,
      loader: 'babel',
      query: {
        presets: ['stage-2','es2015','react'],
        plugins: ['transform-class-properties', 'transform-object-rest-spread']
      }
    }]
  }

该应用在浏览器中工作正常,这让我相信像这样运行摩卡:

mocha './app/tests/*.spec.js' --compilers js:babel-register --recursive

不包括babel插件。

有没有办法让它包含它们?

2 个答案:

答案 0 :(得分:9)

由于您的配置位于webpack.config.js文件中,因此Babel只会在通过Webpack运行时编译文件。当您通过Mocha运行文件时,Babel将在没有任何配置的情况下运行。

您应该将配置移动到项目中的.babelrc文件中,其中包含:

{
    presets: ['stage-2','es2015','react'],
    plugins: ['transform-class-properties', 'transform-object-rest-spread']
}

并从您的webpack配置中删除配置。

答案 1 :(得分:1)

尝试使用babel-core/register代替babel-register

这就是我使用mocha运行自己的测试的方法,它很有效:

find ./tests -name "*.test.js" | xargs mocha --compilers js:babel-core/register