jest.config.js中正则匹配绝对路径报错,需与jsconfig.json效果一致
配置修改方案
错误根因
- 语法错误原因:
+是正则语法中的量词,要匹配路径中字面量的+字符,正则表达式需要写为\+,但由于正则规则写在JavaScript字符串中,反斜杠本身会被字符串转义机制消耗,因此需要二次转义为\\+才能传递给正则引擎正确的规则。 - 模块找不到错误原因:你在替换路径时没有引用正则捕获的后缀内容,正则规则中的
(.*)捕获了路径中+/或~/后的所有内容,但替换值末尾没有加$1引用该捕获结果,导致所有匹配路径都会被直接替换为根目录,丢失了后续的文件路径。
修正后配置
// jest.config.js { ... moduleNameMapper: { '^\\+\\/(.*)$': '<rootDir>/src/styles/$1', '^~\\/(.*)$': '<rootDir>/src/$1' }, }
修正后即可和jsconfig.json的路径解析规则完全对齐:
+/theme/theme会被解析为<rootDir>/src/styles/theme/theme~/components/Account会被解析为<rootDir>/src/components/Account
内容的提问来源于stack exchange,提问作者Aga
相关产品推荐
相关产品推荐

