Jest Test Babel Error: Plugin/Preset files are not allowed to export objects
Jest Test Babel Error: Plugin/Preset files are not allowed to export objects
我使用的是最新的(2017 年 12 月) 堆栈的依赖项。当我用 Jest 尝试同构反应测试时,测试套件不断失败并出现以下错误:
* Test suite failed to run
[BABEL] /__tests__/router.test.js: Plugin/Preset files are not allowed to
export objects, only functions.
这是我的依赖项:
"dependencies": {
"axios": "^0.17.1",
"babel-polyfill": "^6.26.0",
"cors": "^2.8.4",
"express": "^4.16.2",
"react": "^16.1.1",
"react-dom": "^16.1.1",
"react-router-dom": "^4.2.2"
},
"devDependencies": {
"@babel/core": "^7.0.0-beta.35",
"babel-cli": "^6.26.0",
"babel-core": "^7.0.0-bridge.0",
"babel-eslint": "^8.0.2",
"babel-jest": "^22.0.1",
"babel-loader": "^7.1.2",
"babel-preset-env": "^1.6.1",
"babel-preset-react": "^6.24.1",
"enzyme": "^3.2.0",
"enzyme-adapter-react-16": "^1.1.0",
"enzyme-to-json": "^3.2.2",
"eslint": "^4.11.0",
"eslint-plugin-react": "^7.5.1",
"html-webpack-plugin": "^2.30.1",
"jest": "^21.2.1",
"nodemon": "^1.11.0",
"parallelshell": "^3.0.2",
"react-test-renderer": "^16.2.0",
"regenerator-runtime": "^0.11.1",
"supertest": "^3.0.0",
"webpack": "^3.8.1",
"webpack-dev-server": "^2.9.4"
},
"peerDependencies": {
"babel-core": "^7.0.0-0"
}
.babelrc :
{
"presets": [
"env",
"react",
]
}
有人知道为什么 Jest 不会 运行 吗?
babel bridge is meant to cover any issues between 6 and 7
这 100% 不是 bridge 包的作用。它所做的只是允许使用 babel-core
的工具传递给 @babel/core
。整个包是this single line of code.
如果您使用的是 @babel/core
,则需要使用适用于 Babel 7 的插件。这意味着 babel-preset-react
应更改为 @babel/preset-react
,@babel/preset-env
也应如此你的 .babelrc
应该是:
{
"presets": [
"@babel/env",
"@babel/react",
]
}
同理,babel-polyfill
应该是@babel/polyfill
。
None 其中有详细记录,因为 Babel 7 仍然是一个不稳定的测试版。
{
"presets": [
"env",
"react"
],
"test": [
"jest"
]
}
将 "test" 的最后一段代码添加给您 babel.rc
这是我的 .babelrc 代码供参考
{
"presets": [
"env",
"react"
],
"plugins": [
"transform-class-properties",
"transform-object-rest-spread"
],
"test": [
"jest"
]
}
这是我的命令行输出
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 9.264s
Ran all test suites.
Done in 12.99s.
I met the same challenge while configuring jest
to work with babel-6
.
See complete explanation here
但总而言之,--devDependencies
的这种组合对我有用,我设置了 babel-jest
来转换我的 **.js
文件:
// package.json
"devDependencies": {
"babel-core": "6.26.0",
"babel-jest": "21.2.0",
"babel-loader": "7.1.2",
"babel-preset-env": "1.6.0",
"babel-preset-react": "6.24.1",
"babel-preset-stage-0": "6.24.1",
"jest": "21.2.1",
"webpack": "3.6.0"
},
"jest": {
"transform": {
"^.+\.jsx?$": "babel-jest"
}
}
// .babelrc
{
"presets": [
"env",
"stage-0",
"react"
]
}
我使用的是最新的(2017 年 12 月) 堆栈的依赖项。当我用 Jest 尝试同构反应测试时,测试套件不断失败并出现以下错误:
* Test suite failed to run
[BABEL] /__tests__/router.test.js: Plugin/Preset files are not allowed to
export objects, only functions.
这是我的依赖项:
"dependencies": {
"axios": "^0.17.1",
"babel-polyfill": "^6.26.0",
"cors": "^2.8.4",
"express": "^4.16.2",
"react": "^16.1.1",
"react-dom": "^16.1.1",
"react-router-dom": "^4.2.2"
},
"devDependencies": {
"@babel/core": "^7.0.0-beta.35",
"babel-cli": "^6.26.0",
"babel-core": "^7.0.0-bridge.0",
"babel-eslint": "^8.0.2",
"babel-jest": "^22.0.1",
"babel-loader": "^7.1.2",
"babel-preset-env": "^1.6.1",
"babel-preset-react": "^6.24.1",
"enzyme": "^3.2.0",
"enzyme-adapter-react-16": "^1.1.0",
"enzyme-to-json": "^3.2.2",
"eslint": "^4.11.0",
"eslint-plugin-react": "^7.5.1",
"html-webpack-plugin": "^2.30.1",
"jest": "^21.2.1",
"nodemon": "^1.11.0",
"parallelshell": "^3.0.2",
"react-test-renderer": "^16.2.0",
"regenerator-runtime": "^0.11.1",
"supertest": "^3.0.0",
"webpack": "^3.8.1",
"webpack-dev-server": "^2.9.4"
},
"peerDependencies": {
"babel-core": "^7.0.0-0"
}
.babelrc :
{
"presets": [
"env",
"react",
]
}
有人知道为什么 Jest 不会 运行 吗?
babel bridge is meant to cover any issues between 6 and 7
这 100% 不是 bridge 包的作用。它所做的只是允许使用 babel-core
的工具传递给 @babel/core
。整个包是this single line of code.
如果您使用的是 @babel/core
,则需要使用适用于 Babel 7 的插件。这意味着 babel-preset-react
应更改为 @babel/preset-react
,@babel/preset-env
也应如此你的 .babelrc
应该是:
{
"presets": [
"@babel/env",
"@babel/react",
]
}
同理,babel-polyfill
应该是@babel/polyfill
。
None 其中有详细记录,因为 Babel 7 仍然是一个不稳定的测试版。
{
"presets": [
"env",
"react"
],
"test": [
"jest"
]
}
将 "test" 的最后一段代码添加给您 babel.rc 这是我的 .babelrc 代码供参考
{
"presets": [
"env",
"react"
],
"plugins": [
"transform-class-properties",
"transform-object-rest-spread"
],
"test": [
"jest"
]
}
这是我的命令行输出
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 9.264s
Ran all test suites.
Done in 12.99s.
I met the same challenge while configuring
jest
to work withbabel-6
.
See complete explanation here
但总而言之,--devDependencies
的这种组合对我有用,我设置了 babel-jest
来转换我的 **.js
文件:
// package.json
"devDependencies": {
"babel-core": "6.26.0",
"babel-jest": "21.2.0",
"babel-loader": "7.1.2",
"babel-preset-env": "1.6.0",
"babel-preset-react": "6.24.1",
"babel-preset-stage-0": "6.24.1",
"jest": "21.2.1",
"webpack": "3.6.0"
},
"jest": {
"transform": {
"^.+\.jsx?$": "babel-jest"
}
}
// .babelrc
{
"presets": [
"env",
"stage-0",
"react"
]
}