Jest测试引入esm依赖问题

我项目使用了esm版的@pika/react,导致jest执行出错Unexpected token 'export'

能想到的解决方法有如下:

  1. 提升本地node版本到v13.2.0+,native支持esm规范;
  2. 配置jest的moduleNameMapper参数,把单元测试文件的react引用指向commonjs规范的react包;
  3. transformIgnorePatterns参数中增加白名单让@pika目录下的文件经过babel转一下。

我是打算用第3种方法的,但是没有效果:

// jest.config.js
transformIgnorePatterns: [
    "node_modules/(?!@pika/)"
]
// .babelrc
{
  "presets": [
    [
      "react-app"
    ]
  ]
}

不知道是我正则写错了还是其他什么原因?


PS:我是想尝试下尤大的新打包工具vite,它的本地开发体验会比传统的webpack静态打包好很多,我初步浏览了下源码,vite会起个本地的koa服务截获浏览器的资源请求,根据资源类型进行转译或直接返回,尤其在频繁更改文件时不会像webpack那样总是重新编译,每次要等好久。

vite要求第三方依赖包得是esm规范的,但是在node端执行的jest就有我现在遇到的问题了。

阅读 2.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题