babel-jest转换非.js | .jsx扩展名

时间:2017-04-13 15:14:18

标签: jestjs babel-jest

我有Customer.js.flow类型文件。

当我运行jest时,它会因此错误而失败:

Customer.js.flow:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){export type Customer = {
                                                                                         ^^^^^^
SyntaxError: Unexpected token export

  at transformAndBuildScript (node_modules/jest-runtime/build/transform.js:320:12)

即使我明确添加:

"transform": {
  "^.+\\.js.flow$": "babel-jest",
  "^.+\\.jsx?$": "babel-jest"
},

当我将Customer.js.flow更改为Customer.js时,我不再有问题了

1 个答案:

答案 0 :(得分:0)

问题是,在您的jest设置中使用transform时,它将覆盖默认设置。 From the docs

  

注意:如果您正在使用babel-jest变压器并想使用   额外的代码预处理器,请记住,当“转换”时   以任何方式覆盖babel-jest不会自动加载   了。如果你想用它来编译JavaScript代码,它必须是   明确定义。请参阅babel-jest插件

所以你需要作为.js文件的匹配器。

"transform": {
  "^.+\\.js\\.flow$": "babel-jest",
  "^.+\\.jsx?$": "babel-jest"
},

我不像正则表达式那么好,但这个原因可以简化为一个声明。