React/TS项目Jest出现Cannot use import报错的解决方案
问题场景
在Babel + TypeScript + React技术栈的前端项目中,使用Jest开展组件单元测试时抛出语法错误:SyntaxError: Cannot use import statement outside a module
已尝试的无效排查手段
- 调整Babel配置,补充相关转译插件(对应babel.config.js配置见排查时附的项目配置文件)
- 配置Jest使用
ts-jest作为转译预设 - 参照ts-jest官方说明完成ESM模块支持相关配置
- 尝试公开社区中同报错的多套通用解决方案
排查阶段已提供项目当前jest.config.js、babel.config.js、package.json、webpack.config.js全量配置、错误堆栈截图作为定位依据,以上方案均未解决问题。
修复方案
该问题由高版本nanoid包的ESM格式与Jest CommonJS运行环境的兼容问题导致,经实测有效解决方式为:将项目依赖的nanoid版本降级至3.3.4。
执行对应安装命令锁定版本即可:
# npm npm i nanoid@3.3.4 --save-exact # yarn yarn add nanoid@3.3.4 --exact # pnpm pnpm add nanoid@3.3.4 --save-exact
安装完成后清除Jest缓存、重新安装依赖后再运行测试用例即可正常执行。
内容的提问来源于stack exchange,提问作者AAMCODE
相关产品推荐
相关产品推荐

