【问题标题】:Jest fails to transpile import from npm linked moduleJest 无法从 npm 链接模块转换导入
【发布时间】:2017-11-08 20:49:26
【问题描述】:

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

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"
    ]
}

我尝试了所有能找到的方法,包括:

  • 不同的 Babel 配置,包括一个带有 es2015 预设并为测试环境启用 modules 的配置
  • 为 babel-jest 手动设置 transform 选项
  • 如前所述,Jest 可以在 shared 模块中执行,因此 Jest 和 babel-jest 也安装在那里。

【问题讨论】:

    标签: javascript babeljs jestjs lerna


    【解决方案1】:

    我不得不在web 模块的package.json 中更改Jest 的transformIgnorePatterns 配置选项。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 2016-12-23
      • 2018-02-03
      • 2019-12-17
      相关资源
      最近更新 更多