![](/img/trans.png)
[英]Angular Apollo V3 - Jest error: Cannot find module 'apollo-angular'
[英]Angular 14 Upgrade w/ Jest 28 and Nx Having Issues with Jest Tests "Cannot find module 'apollo-angular'"
我有一个非常特殊的问题,我已经研究了很长时间。 我正在将我们的主要前端应用程序从 Angular 12 升级到 Angular 14。所有迁移都成功了。 该应用程序构建并运行得很好。 但是,由于无法找到apollo-angular
模块,测试失败了。 我们使用 apollo-angular 向我们的后端服务发出 GQL 请求。 该应用程序使请求很好。 但是,当我尝试在项目中运行我的单元测试时,它们总是失败,因为它们找不到 apollo-angular 模块。
这是我当前的设置。 如果我遗漏了任何有用的文件,请告诉我,我会添加它们。
./jest.preset.ts
const nxPreset = require('@nrwl/jest/preset').default;
module.exports = {
...nxPreset,
};
./jest.config.ts
const { getJestProjects } = require('@nrwl/jest');
export default {
projects: getJestProjects(),
};
./libs/shared/ui-components/jest.config.ts
import { pathsToModuleNameMapper } from 'ts-jest';
const { paths } = require('../../../tsconfig.base.json').compilerOptions;
export default {
displayName: 'ui-components',
preset: 'jest-preset-angular',
setupFilesAfterEnv: ['../../../jest-setup.ts'],
moduleNameMapper: pathsToModuleNameMapper(paths, {
prefix: '<rootDir>/../../..',
}),
globals: {
'ts-jest': {
tsconfig: '<rootDir>/tsconfig.spec.json',
},
},
transform: {
'^.+.(ts|mjs|js|html)$': 'jest-preset-angular',
},
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
};
任何帮助将不胜感激。 我一直在这上面旋转我的轮子太久了。
干杯,内特
经过大量研究,出现了一个解决方案。 我发现将以下解析器添加到我的 jest.config.ts 允许测试成功执行。
/* eslint-disable */
import { pathsToModuleNameMapper } from 'ts-jest';
const { paths } = require('../../../tsconfig.base.json').compilerOptions;
export default {
displayName: 'shared-data-access-auth',
preset: 'jest-preset-angular',
setupFilesAfterEnv: ['../../../jest-setup.ts'],
moduleNameMapper: pathsToModuleNameMapper(paths, {
prefix: '<rootDir>/../../..',
}),
globals: {
'ts-jest': {
tsconfig: '<rootDir>/tsconfig.spec.json',
},
},
transform: {
'^.+.(ts|mjs|js|html)$': 'jest-preset-angular',
},
transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'],
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
resolver: 'jest-preset-angular/build/resolvers/ng-jest-resolver.js',
};
此修复的关键因素是['node_modules/(?..*\\,mjs$)'],
和'jest-preset-angular/build/resolvers/ng-jest-resolver.js',
希望这可以帮助别人!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.