Babel7 Jest意外令牌导出

Sal*_*han 4 babel jestjs babel-jest

我在使用Babel7的项目中运行jest测试时遇到问题.测试用于与babel完美交叉6.它还使用Babel7与webpack完美编译,但由于转换错误而无法使用jest运行测试.我究竟做错了什么?

react/node_modules/generic-redux-root/index.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){export * from './source/CreateReduxRoot';
                                                                                         ^^^^^^

SyntaxError: Unexpected token export
Run Code Online (Sandbox Code Playgroud)

我的开玩笑配置

{
"unmockedModulePathPatterns": [
  "<rootDir>/node_modules/react",
  "<rootDir>/node_modules/react-dom",
  "<rootDir>/node_modules/react-addons-test-utils",
  "<rootDir>/node_modules/fbjs",
  "enzyme"
],
"roots": [
  "<rootDir>/__tests__"
],
"transformIgnorePatterns": [
  "node_modules/(^generic-)/i", //a module matching this is throwing an error
  "node_modules/react-infinite-scroller"
],
"setupFiles": [
  "./jestsetup.js"
],
"snapshotSerializers": [
  "enzyme-to-json/serializer"
],
"testResultsProcessor": "./jestTrxProcessor",
"verbose": true
Run Code Online (Sandbox Code Playgroud)

}

我的.babelrc

{
"presets": [
    [
        "@babel/preset-env",
        {
            "targets": {
                "ie": 11
            },
            "useBuiltIns": "usage"
        }
    ],
    "@babel/preset-react"
],
"plugins": [
    "@babel/plugin-transform-runtime",
    "@babel/plugin-syntax-dynamic-import",
    "@babel/plugin-syntax-import-meta",
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-proposal-json-strings",
    [
        "@babel/plugin-proposal-decorators",
        {
            "legacy": true
        }
    ],
    "@babel/plugin-proposal-function-sent",
    "@babel/plugin-proposal-export-namespace-from",
    "@babel/plugin-proposal-numeric-separator",
    "@babel/plugin-proposal-throw-expressions",
    "@babel/plugin-proposal-object-rest-spread",
    "@babel/plugin-transform-object-assign"
]
Run Code Online (Sandbox Code Playgroud)

}

我究竟做错了什么?

Pav*_*juk 13

发生这种情况是因为Babel 7不再.babelrc自动加载.有一个新概念root config应位于项目的根目录中,并且必须命名文件babel.config.js并导出对象.

那么为了给你一些步骤:

  1. 重命名你.babelrc,babel.config.js并确保你使用module.exports = {...}
  2. 跑去jest --clearCache清除Jest的内部缓存(这让我花了几个小时的时间撞到了墙上)
  3. 此时你的babel配置应该由Jest正确加载