Jest 无法从 npm 链接模块转换导入
Jest fails to transpile import from npm linked module
我有一个包含多个模块的项目(使用 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
的配置
- 手动设置 babel-jest 的
transform
选项
- 如前所述,Jest 可以在
shared
模块中执行,因此 Jest 和 babel-jest
也安装在那里。
我不得不在 web
模块的 package.json
中更改 Jest 的 transformIgnorePatterns
配置选项。
{
"jest": {
"transformIgnorePatterns": [
"<rootDir>/node_modules/(?!shared|another)"
]
},
}
我有一个包含多个模块的项目(使用 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
的配置 - 手动设置 babel-jest 的
transform
选项 - 如前所述,Jest 可以在
shared
模块中执行,因此 Jest 和babel-jest
也安装在那里。
我不得不在 web
模块的 package.json
中更改 Jest 的 transformIgnorePatterns
配置选项。
{
"jest": {
"transformIgnorePatterns": [
"<rootDir>/node_modules/(?!shared|another)"
]
},
}