我目前正在尝试在Typescript monorepo中使用jest (不是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。你能帮我修复我的配置吗?
发布于 2020-11-11 01:33:26
假设您的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')
}
...
}https://stackoverflow.com/questions/56794436
复制相似问题