node.js - 如何让 Jest 识别以 # 开头的 ES6 绝对路径导入?
问题描述
根据NodeJS,他们建议在绝对路径前加上 #。运行 Jest 时,它无法识别如何找到这些模块。我收到一个错误Cannot find module '#loaders/logger' from 'src/loaders/logger.js'
,因为我使用这些绝对路径导入。
import { logger } from "#loaders/logger";
export const fn1 = () => {
// does something
}
我把它放在src
里面jest.moduleDirectories
,但它在理解 # 时遇到了问题。如何使用此表示法使 Jest 解析到正确的路径?
包.json
{
"engines": {
"node": ">=14.x.x",
"npm": ">=6.14.11"
},
"type": "module",
"imports": {
"#src/*": "./src/*.js",
"#loaders/*": "./src/loaders/*.js",
},
"jest": {
"moduleDirectories": [
"node_modules",
"src"
]
},
"scripts": {
"test": "NODE_OPTIONS=--experimental-vm-modules npm jest",
},
}
解决方案
根据文档添加moduleNameMapper
到我的 Jest 配置中
包.json
{
"jest": {
"moduleDirectories": [
"node_modules",
"src"
],
"moduleNameMapper": {
"#loaders": "<rootDir>/src/loaders",
"#(.*)": [
"<rootDir>/src/embedded/path/$1",
"<rootDir>/src/$1",
"<rootDir>/src"
]
}
},
}
推荐阅读
- kotlin - 如何在 Kotlin 中找到重载的运算符?
- python - 无法在 Python 中将 NonType 转换为 String 错误
- python - 简单的问题:在python3 env中,为什么不能运行简单的打印?
- mysql - Python MySQL 缓存在 Python 端
- .net - vb.net 为什么我不能在第二个项目中使用 MimeType?
- java - 如何使用 replaceAll 函数来屏蔽数字?(Java 图形用户界面)
- excel - 无法更改图表图例的位置而不会出现错误
- c# - C#:如何将 VariantBool 编组为托管布尔值?
- swagger - NestJS Swagger - 自定义类的附加属性的定义不与 ApiExtraModels 装饰器一起使用
- javascript - 如何呈现在 mapStateToProps (REDUX) 中接收的值