Jest Test Babel错误:不允许插件/预设文件导出对象

edl*_*lee 12 reactjs jestjs isomorphic-javascript babeljs

我正在使用最新的(2017年12月)依赖项堆栈。当我尝试使用Jest进行同构反应测试时,测试服不断失败并显示以下错误:

* Test suite failed to run
[BABEL] /__tests__/router.test.js: Plugin/Preset files are not allowed to
export objects, only functions.
Run Code Online (Sandbox Code Playgroud)

这是我的依赖项:

"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"
  }
Run Code Online (Sandbox Code Playgroud)

.babelrc:

{
  "presets": [
    "env",
    "react",
  ]
}
Run Code Online (Sandbox Code Playgroud)

关于Jest为什么不运行,是否有人有任何见解?

小智 21

{
    "presets": [
        "env",
        "react"
    ],
    "test": [
        "jest"
    ]
}
Run Code Online (Sandbox Code Playgroud)

向您添加“测试”的最后代码块babel.rc这是我的.babelrc代码供参考

   {
    "presets": [
        "env",
        "react"
    ],
    "plugins": [
        "transform-class-properties",
        "transform-object-rest-spread"
    ],
    "test": [
        "jest"
    ]
}
Run Code Online (Sandbox Code Playgroud)

这是我在命令行中的输出

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.
Run Code Online (Sandbox Code Playgroud)

  • 我希望我能对你的回复投赞成票大约 25 次;我感觉它节省了我几个小时。感谢您抽出时间回复! (5认同)
  • 这节省了我很多时间。 (2认同)

log*_*yth 8

通天桥旨在涵盖6到7之间的所有问题

那不是桥包所做的100%。它所做的只是允许使用的工具babel-core传递给@babel/core。整个程序包就是这一行代码

如果您使用@babel/core,则需要使用可在Babel 7上使用的插件。这意味着babel-preset-react应该更改为,@babel/preset-react并且与相同,@babel/preset-env并且您.babelrc应该是:

{
  "presets": [
    "@babel/env",
    "@babel/react",
  ]
}
Run Code Online (Sandbox Code Playgroud)

同样,babel-polyfill应为@babel/polyfill

由于Babel 7仍是不稳定的Beta,因此尚未对此进行充分记录。