You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jest测试引入pupa包报错Cannot use import statement outside a module如何解决

解决方案
  • 首先修正transformIgnorePatterns配置,你当前的配置匹配的是@pupa域下的包,但pupa本身不属于任何npm组织,正确配置如下:
transformIgnorePatterns: [
  `node_modules/(?!(pupa)/)`,
],

该配置会让jest对pupa包进行代码转换,避免直接读取其ESM格式的源码触发导入错误。

  • 确认Babel转换配置正常
    如果你项目使用babel-jest作为转换工具,需要保证babel.config.js中配置了可转换ES模块的预设,示例配置如下:
module.exports = {
  presets: [
    ['@babel/preset-env', { targets: { node: 'current' } }]
  ]
}
  • 适配Jest高版本的ESM规则
    如果你使用Jest 28及以上版本,还可以在jest配置中添加以下字段:
extensionsToTreatAsEsm: ['.js'],

如果你的项目package.json中没有设置"type": "module",也可以在测试代码中改用动态导入的方式加载pupa:

const pupa = (await import('pupa')).default
  • 兜底兼容方案
    pupa 从 3.0 版本开始仅提供 ESM 格式产物,如果你不想大幅修改现有测试配置,可以直接降级使用pupa的2.x版本,该版本同时支持ESM和CommonJS格式:
npm install pupa@2

内容的提问来源于stack exchange,提问作者VickyR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:48:03