我目前正在尝试在Typescript monorepo中使用笑话(不是Lerna或其他baseURL
和paths
,也不是我的决定),而我正在测试的文件之一会导入来自monorepo的东西。
import {publish, subscribe} from "message-bus"
现在我的tsconfig.json
中有:
...
"compilerOptions": {
"baseUrl": "./packages",
"paths": {
"message-bus":["message-bus/src"],
},
...
并在软件包jest.config.js
中:
module.exports = {
...
preset: 'ts-jest',
moduleNameMapper: {
'^message-bus/(.*)$': "../message-bus/src/$1"
}
...
}
即使所有这些都准备就绪,jest
仍抱怨找不到模块message-bus
。你能帮我修复我的配置吗?
答案 0 :(得分:0)
假设jest.config.js
位于软件包的根目录而不是monorepo,则需要moduleNameMapper
形成一条可以从任何位置理解的路径。您可以从jest.config.js
文件所在的目录开始,然后从那里建立路径。这将为您的映射模块创建一个绝对路径。
此外,您还需要在正则表达式捕获组中使用斜杠(/
),因为它并不总是在路径中。
const path = require('path');
module.exports = {
...
preset: 'ts-jest',
moduleNameMapper: {
'^message-bus(.*)$': path.join(__dirname, '../message-bus/src$1')
}
...
}