7

我有一个包含多个模块的项目(使用Lerna),我想使用 Jest 来运行测试。但是,当我测试使用共享模块(通过 Lerna 的 npm 链接模块)的代码时,似乎没有正确应用 Babel,并且出现以下错误:

SyntaxError: Unexpected token import

我的项目结构是这样的:

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

webnative需要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为测试环境启用的配置
  • 手动设置transformbabel-jest 的选项
  • 如前所述,Jest 可以在shared模块中执行,因此 Jest 也babel-jest可以安装在那里。
4

1 回答 1

6

我不得不在模块中更改transformIgnorePatternsJest 的配置选项。package.jsonweb

{
    "jest": {
        "transformIgnorePatterns": [
            "<rootDir>/node_modules/(?!shared|another)"
        ]
    },
}
于 2017-06-07T15:40:29.927 回答