我有一个包含多个应用程序(Angular和NestJS)的monoreo,它们共享一些东西,如接口、枚举等。这些应用程序可以工作,Jasmine测试也可以与Angular应用程序一起工作,但我在NestJS应用程序中的Jest测试无法从共享的monoreto文件夹导入任何内容。
这是我的文件夹结构:
my-repo/
âââ ng-ui-1/
âââ ng-ui-2/
âââ nest-api/
â âââ src/ (folder w/ app code)
â âââ tsconfig.json
â âââ tsconfig.build.json
â âââ (etc...)
âââ monorepo-shared/
â âââ enums/
â â âââ *.enum.ts files
â âââ interfaces/
â â âââ *.interface.ts files
在所有打字脚本应用程序中,我都将其添加到了
tsconfig.json
文件,而且它工作得很好
{
"compilerOptions": {
//...
"paths": {
"@monorepo-shared/constants": ["../monorepo-shared/constants/index"],
"@monorepo-shared/enums": ["../monorepo-shared/enums/index"],
"@monorepo-shared/interfaces":["../monorepo-shared/interfaces/index"]
}
}
}
在TS文件中,我可以添加它来从这些共享文件夹中导入一些东西,同样,除了Jest测试之外,这在任何地方都可以正常工作。
import { BrandingTypeEnum } from '@monorepo-shared/enums';
当我运行Jest测试时,我会得到这个错误
Cannot find module '@monorepo-shared/enums' from 'account/account.controller.spec.ts'
在我的
package.json
我定义了我的Jest设置。我知道我需要以某种方式指出
@monorepo-shared/enums
因为某种原因,它无法推断出这一点,但到目前为止,我所尝试的一切都不正确。
"jest": {
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"moduleDirectories": [
"node_modules",
"@monorepo-shared/constants",
"@monorepo-shared/enums",
"@monorepo-shared/interfaces",
],
"rootDir": "src",
"testRegex": ".*\\.spec\\.ts$",
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
},
"collectCoverageFrom": [
"**/*.(t|j)s"
],
"coverageDirectory": "../coverage",
"testEnvironment": "node"
},
我试过很多
the solutions in this question
到目前为止,一切都不对劲。
我需要改变什么才能让Jest看到我在
tsconfig.json
文件