我见过类似的问题,但仍无法找到可行的解决方案。
我正在尝试将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
答案 0 :(得分:0)
您尚未在项目中设置.babelrc
文件,因此不会进行转换。您需要将ES6 +语法(import
,export
等)转换为浏览器可读的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
插件。
要使用它,您需要:
npm install --save-dev babel-plugin-transform-es2015-modules-commonjs
plugins: [
"transform-es2015-modules-commonjs"
]