【发布时间】:2017-11-08 20:49:26
【问题描述】:
我有一个包含多个模块的项目(使用Lerna),我想使用 Jest 运行测试。但是,当我测试使用共享模块(通过 Lerna 的 npm 链接模块)的代码时,似乎没有正确应用 Babel,并且出现以下错误:
SyntaxError: Unexpected token import
我的项目结构是这样的:
- my-project
|- shared
|- native
|- web
web 和 native 需要 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"
]
}
我尝试了所有能找到的方法,包括:
- 不同的 Babel 配置,包括一个带有
es2015预设并为测试环境启用modules的配置 - 为 babel-jest 手动设置
transform选项 - 如前所述,Jest 可以在
shared模块中执行,因此 Jest 和babel-jest也安装在那里。
【问题讨论】:
标签: javascript babeljs jestjs lerna