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

Shopware 6 Jest单元测试配置错误:无法定位模块

Shopware 6 Jest单元测试模块映射问题排查

1. 映射失败的可能原因

  • Jest模块映射规则错误:如果jest.config.js里的moduleNameMapper正则未精准匹配ES模块路径,比如未把^@shopware-ag/admin-extension-sdk/es/(.*)$正确映射到@shopware-ag/admin-extension-sdk/umd/$1,就会导致路径解析失败。
  • UMD包结构不匹配:检查node_modules/@shopware-ag/admin-extension-sdk/umd/data/目录,若不存在Criteria.js文件,说明SDK的UMD编译产物结构和ES模块不一致——虽然存在类型声明文件(.d.ts),但缺少对应的可执行JS模块。
  • TypeScript配置冲突:如果项目使用TypeScript,tsconfig.json中的paths配置可能和Jest的moduleNameMapper冲突,导致模块解析逻辑混乱。
  • Jest缓存残留:Jest默认会缓存模块解析结果,之前错误的配置可能被缓存,修改配置后未生效。可删除node_modules/.cache/jest目录,或运行测试时添加--no-cache参数。

2. package.json是否缺失依赖

  • SDK版本不匹配:需安装与Shopware版本对应的@shopware-ag/admin-extension-sdk版本(如Shopware 6.4对应SDK 2.x,6.5对应SDK 3.x),版本不兼容可能导致模块结构异常。
  • Jest相关依赖缺失:若使用TypeScript编写测试,需确保安装ts-jest、@types/jest;由于Admin SDK面向浏览器环境,还需安装jest-environment-jsdom,缺失这些依赖会引发解析或环境适配问题。
  • 依赖版本冲突:检查peerDependencies要求,比如Jest 28+需匹配对应版本的ts-jest,版本不匹配会导致模块解析报错。

快速排查步骤

  1. 验证jest.config.js的映射规则,示例配置:
moduleNameMapper: {
  '^@shopware-ag/admin-extension-sdk/es/(.*)$': '<rootDir>/node_modules/@shopware-ag/admin-extension-sdk/umd/$1'
}
  1. 手动确认node_modules/@shopware-ag/admin-extension-sdk/umd/data/Criteria.js是否存在,不存在则更换SDK版本。
  2. 运行测试时添加--verbose --no-cache参数,查看详细的模块解析日志,定位具体报错路径。
  3. 同步tsconfig.json的compilerOptions.paths与Jest的moduleNameMapper配置,避免规则冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:16:02