"SyntaxError: Unexpected token export" 将 Jest 与 babel 7+ 一起使用



我试图用一个测试来覆盖基本的reducer,但它在我的常量文件中抛出了导出错误:

FAIL  jest/spec/reducers/RootReducer.spec.js
● Test suite failed to run
Jest encountered an unexpected token
Details:
project-rootjssrcconstantsActionTypes.js:2
export const LOCALE_REQUEST = 'ROOT/LOCALE_REQUEST';
^^^^^^
SyntaxError: Unexpected token export
1 | 'use strict';
2 |
> 3 | import { LOCALE_REQUEST_SUCCESS, ROUTING_REQUEST_SUCCESS } from '/js/src/constants/ActionTypes';
| ^
4 |
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
at Object.<anonymous> (jest/spec/reducers/RootReducer.spec.js:3:1)

我正在从"项目根\测试"文件夹运行测试

我想测试的js文件位于"projectroot\js"文件夹中

我相信这就是错误的原因。因为我试图导入的文件在tests文件夹之外,所以看起来它没有被传输

这是我的包.json:

{
"name": "jest",
"version": "0.0.0",
"scripts": {
"test": "jest"
},
"devDependencies": {
"@babel/core": "^7.2.2",
"@babel/plugin-transform-modules-commonjs": "^7.2.0",
"@babel/preset-env": "^7.2.3",
"babel-core": "7.0.0-bridge.0",
"jest": "^23.6.0"
}
}

这是。babelrc

{
"presets": [
"@babel/preset-env"
],
"plugins": [
"@babel/plugin-transform-modules-commonjs"
]
}

这是jest.config.js

module.exports = {
verbose: true,
transform: {
"^.+\.jsx?$": "babel-jest"
},
bail: true,
browser: true,
cacheDirectory: '/tmp/jest',
collectCoverage: false,
roots: [
'<rootDir>/../js',
'<rootDir>/jest'
],
moduleNameMapper: {
'^(.*)/js/(.*)$': '<rootDir>/../js/$2'
},
testRegex: '(jest/spec/.*|(\.|/)(test|spec))\.js$',
testPathIgnorePatterns: [
'<rootDir>/node_modules'
],
transformIgnorePatterns: [
'/node_modules/'
]
};

所以我试着在网上寻找类似的案例,但在大多数情况下,问题来自/nod_module或jest配置中缺少的东西。但我找不到我的情况有什么问题,我真的很感激任何提示,我可以尝试

up:有人建议我需要将babel jest添加到我的包.json中,但它已经在/nod_module中了-它是用jest包添加的

问题围绕着这样一个事实,即您没有babel加载程序设置,因此在编译期间,导入和导出命令不会从源代码中删除,项目将崩溃,因为babel不知道如何在没有安装和配置babel加载程序的情况下处理这些命令。

关于如何开始ES6传输和模块加载的快速示例,您可以查看此示例。

youtube.com/watch?v=X5wTsHRsbIA

最新更新