如何让Jest识别带#前缀的ES6绝对路径导入?
解决方案
Jest默认不会读取package.json中imports字段定义的子路径映射规则,因此无法识别#前缀的导入路径,可通过以下步骤配置修复:
1. 新增jest.moduleNameMapper配置
在package.json的jest配置段中添加路径映射规则,和你定义的imports规则一一对应:
{ "jest": { "moduleDirectories": [ "node_modules", "src" ], // 新增以下配置 "moduleNameMapper": { "^#src/(.*)$": "<rootDir>/src/$1", "^#loaders/(.*)$": "<rootDir>/src/loaders/$1" }, "testEnvironment": "node", "extensionsToTreatAsEsm": [".js"] } }
^#前缀/(.*)$是正则匹配规则,对应你定义的导入前缀<rootDir>是Jest内置变量,指向项目根目录(即package.json所在目录)
2. 修正test脚本命令
你当前的test脚本中npm jest写法有误,npm无法直接识别jest作为子命令,需改为调用本地jest二进制:
{ "scripts": { "test": "NODE_OPTIONS=--experimental-vm-modules npx jest" } }
3. 可选:升级Jest版本
如果配置后仍不生效,可升级到最新稳定版Jest保证ES模块和路径映射的兼容性:
npm install -D jest@latest
配置完成后重新执行npm run test即可正常解析#前缀的导入路径。
内容的提问来源于stack exchange,提问作者wongx
相关产品推荐
相关产品推荐

