2017-06-07 49 views
2

我有一个包含多个模块的项目(使用Lerna),我想用Jest来运行测试。然而,当我测试使用共享的模块代码(经勒拿湖NPM链接模块)似乎巴贝尔应用不正确,我得到以下错误:Jest无法从npm链接模块转储导入

SyntaxError: Unexpected token import 

我的项目的结构是这样的:

- my-project 
|- shared 
|- native 
|- web 

webnative需要shared模块。当我进入shared目录并在Jest中运行本地测试时,一切正常。如果我在web目录中运行Jest测试,只要包含shared中的某些内容,就会发生上述错误。

这里是一个超级简单的测试导致错误:

import { util } from 'shared'; 

it('returns false if not prod',() => { 
    expect(util.isProd()).toBe(false); 
}); 

.babelrc看起来是这样的:

{ 
    "presets": [ 
     "env", 
     "flow", 
     "react" 
     ], 
    "plugins": [ 
     "flow-react-proptypes", 
     "transform-object-rest-spread", 
     "transform-class-properties" 
    ] 
} 

我什么都试过了我能找到,其中包括:

  • 不同的巴别配置,包括一个与es2015预设和启用modules测试环境
  • 手动设置为巴别-开玩笑
  • 如所提到的,可以玩笑的shared模块中被执行,从而,玩笑和babel-jest安装有作为所述transform选项。

回答

3

我不得不改变在web模块的package.json开这个玩笑的transformIgnorePatterns配置选项。

{ 
    "jest": { 
     "transformIgnorePatterns": [ 
      "<rootDir>/node_modules/(?!shared|another)" 
     ] 
    }, 
}