以jest错误导入:意外的令牌导入

时间:2017-06-14 19:19:42

标签: import jestjs

我见过类似的问题,但仍无法找到可行的解决方案。

我正在尝试将Jest集成到一个工作项目中,该项目在数百个地方使用导入/导出默认值。以下测试适用于Jest使用require:

const bar = require('../../flows/foo');

test('adds 1 + 2 to equal 3', () => {
  expect(bar.foobar(1, 2)).toBe(3);
});

导出时:

module.exports = { 
 foobar: foobar,
  fizz: fizz
}

我想要测试的功能是使用以下方式导出的:

export default {
  foobar: foobar,
  fizz: fizz
};

所以当我尝试更新我要导入的测试时:

import foobar from '../../flows/foo';

使用导出:

export default {foobar: foobar};

我收到错误

SyntaxError: Unexpected token import

3 个答案:

答案 0 :(得分:0)

您尚未在项目中设置.babelrc文件,因此不会进行转换。您需要将ES6 +语法(importexport等)转换为浏览器可读的ES5。

答案 1 :(得分:0)

所需的一切:

// run this command (or npm equivalent)
yarn add @babel/core @babel/preset-env

// add babel.cofig.js
module.exports = {
  presets: [
    [
      '@babel/preset-env',
      {
        targets: {
          node: 'current'
        }
      }
    ]
  ]
};

Jest自动将其拾取,不需要其他配置。

答案 2 :(得分:0)

由于this GitHub issue post,我遇到了这个问题并以这种方式解决了这个问题:

如果您使用babel来转换代码,请记住使用transform-es2015-modules-commonjs插件。

要使用它,您需要:

  1. 通过在CLI中输入以下命令来安装BabelJS插件:

npm install --save-dev babel-plugin-transform-es2015-modules-commonjs

  1. 将插件添加到babel配置中的插件列表中
plugins: [
  "transform-es2015-modules-commonjs"
]