首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jest.config.js中设置tsconfig路径。Angular 8. jest-preset-angular

如何在jest.config.js中设置tsconfig路径。Angular 8. jest-preset-angular
EN

Stack Overflow用户
提问于 2019-11-01 00:11:16
回答 1查看 1.4K关注 0票数 1

我在我的tsconfig中设置了绝对路径,这些路径在服务期间按预期工作,但不能用于jest。

示例路径如下所示:

代码语言:javascript
复制
"paths": {
    "@shared": "src/app/shared/index.ts"
}

然后在我可以使用的组件中

代码语言:javascript
复制
import { MySharedComponent, MyOtherSharedComponent } from '@shared';

我目前正在尝试使用Jest进行测试。在我的jest.config.js中有一个moduleNameMapper部分:

代码语言:javascript
复制
moduleNameMapper: {
    '@shared/(.*)': 'src/app/shared/$1'
}

这会导致

代码语言:javascript
复制
cannot find module @Shared

如果我将tsconfig路径更改为:

代码语言:javascript
复制
"paths": {
    "@shared/*": "src/app/shared/*"
}

这些不再起作用了

代码语言:javascript
复制
import { MySharedComponent, MyOtherSharedComponent } from '@shared';

并必须更新到此

代码语言:javascript
复制
import { MySharedComponent } from '@shared/my-shared.component';
import { MyOtherSharedComponent } from '@shared/my-other-shared.component';

测试运行良好,项目运行正常,但这是一个大型项目,我有数百个使用此格式的导入

代码语言:javascript
复制
import { MySharedComponent, MyOtherSharedComponent } from '@shared';

有没有一种方法可以让moduleNameMapper使用此路径

代码语言:javascript
复制
"@shared": "src/app/shared/index.ts"
EN

回答 1

Stack Overflow用户

发布于 2020-02-23 05:32:20

tsconfig.json中,可以有多个用于@sharedpaths,一个用于index.ts,其他用于子路径:

代码语言:javascript
复制
"paths": {
    "@shared": "src/app/shared/index.ts",
    "@shared/*": "src/app/shared/*"
}

对于moduleNameMapper,您还可以添加第二个:

代码语言:javascript
复制
moduleNameMapper: {
    '@shared/(.*)': 'src/app/shared/$1',
    '@shared': 'src/app/shared/index.ts'
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58647360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档