使用jest导入错误:意外的令牌导入。

4

我看过类似的问题,但仍然找不到可行的解决方案。

我正在尝试将Jest集成到一个已经有数百个地方使用import/export default的工程中。以下测试通过使用require可以正常工作:

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

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

当export为:

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

你能找到解决方案吗? - Steve Meisner
3个回答

3

所需一切:

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

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

Jest会自动识别,无需其他配置。

0

您的项目中没有设置.babelrc文件,因此无法进行转译。您需要将ES6+语法(importexport等)转译为浏览器可读的ES5。


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"
]

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