我有一个包含多个模块的项目(使用Lerna),我想使用 Jest 来运行测试。但是,当我测试使用共享模块(通过 Lerna 的 npm 链接模块)的代码时,似乎没有正确应用 Babel,并且出现以下错误:
SyntaxError: Unexpected token import
我的项目结构是这样的:
- my-project
|- shared
|- native
|- web
web
并native
需要shared
模块。当我进入shared
目录并在 Jest 中运行本地测试时,一切正常。如果我在目录中运行 Jest 测试,web
只要我包含来自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"
]
}
我尝试了我能找到的一切,包括:
- 不同的 Babel 配置,包括一个带有
es2015
预设并modules
为测试环境启用的配置 - 手动设置
transform
babel-jest 的选项 - 如前所述,Jest 可以在
shared
模块中执行,因此 Jest 也babel-jest
可以安装在那里。