如何在Chai中转译ES6的导入?

3

我正在使用最简单的设置来创建一个React应用程序:

  • Webpack
  • Babel
  • React + Flux
  • Mocha & Chai 用于测试

现在,我想要测试我的应用程序。

我有一个名为.babelrc的文件,其中包含以下内容:

{
  "presets": ["es2015"],
  "ignore": false
}

我的测试看起来像这样:

而我的测试则长成这样:

import { expect, assert } from 'chai';
import AppStore from '../src/js/stores/app-store';

describe('app store', () => {
  assert.equal(3,3);
});

当我注释掉第二个导入时,它可以正常工作。

当我导入我的AppStore时,我收到了这个错误信息:

(function (exports, require, module, __filename, __dirname) { import { dispatch, register } from '../dispatchers/app-dispatcher';
                                                              ^^^^^^

SyntaxError: Unexpected token import

所以,显然我正在转译test.js文件,但是导入的内容无法转译为ES5。

我该怎么办?最小设置是什么样子的(不使用Grunt或其他工具)。

编辑:我的package.json中的node脚本如下:

  "scripts": {
    "dev": "webpack && webpack-dev-server",
    "test": "mocha --compilers js:babel-core/register --recursive"
  },

3
mocha --compilers js:babel-core/register --recursive 应该改为 mocha --compilers js:babel-register --recursive,具体根据不同的版本而定。 - Henrik Andersson
1个回答

0

我也遇到了同样的问题。在尝试了stackoverflow和其他所有解决方案之后,package.json上的这个简单配置对我有用:

  "babel": {
    "presets": [
      "es2015"
    ]
  }

配置好之后,我所有的 ES6 引入都能正常工作了。 顺便提一下,我之前在 webpack.config.js 中也尝试过这个配置,但显然这是唯一使得 Mocha 测试正常工作的方式。


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