首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jest无法解析路径映射并抛出模块找不到错误

Jest无法解析路径映射并抛出模块找不到错误
EN

Stack Overflow用户
提问于 2022-09-27 01:59:03
回答 1查看 169关注 0票数 1

我有tsconfig.json文件,其中映射了我的所有路径

代码语言:javascript
运行
复制
{
  "compilerOptions": {
    "lib": ["es2015", "dom"],
    "target": "es2015",
    "baseUrl": ".",
    "types": ["reflect-metadata", "jest", "node", "@types/jest"],
    "typeRoots": ["./types", "./node_modules/@types"],
    "esModuleInterop": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "paths": {
      "@utils/*": ["./utils/*"],
      "@helpers/*": ["./ui/helpers/*"],
      "@domElements/*": ["./core/dom/*"],
      "@networking/*": ["./networking/*"],
      "@components/*": ["./ui/components/*"],
      "@decorators/*": ["./core/decorators/*"],
      "@eventFunctions/*": ["./ui/event functions/*"]
    }
  }
}

我有一个名为form.ts的文件,其中有下面的代码。

代码语言:javascript
运行
复制
import { component } from '@decorators/component';
import { event } from '@decorators/events';
import { DOMElements } from '@domElements/domElements';
import { submitForm } from '@eventFunctions/formSubmit';

@component
export class FormComponent {
  @event('submit', submitForm)
  getForm(): HTMLDivElement {
    return DOMElements.getForm();
  }
}

但是,在编译类型记录时,这一切都很好,因为我正在为这个类运行测试->

代码语言:javascript
运行
复制
import { FormComponent } from '../../ui/components/form';

describe('Form class test', () => {
  test('It should have a method called getForm', () => {
    expect(new FormComponent().getForm).toBeInstanceOf(Function);
  });
});

如果出现错误,它将无法从Resolver._throwModNotFoundError Resolver._throwModNotFoundError at Object的'ui/components/form.ts‘中找到模块'@decorators/component’。(ui/components/form.ts:1:1)

我知道这是因为tsconfig.json中的路径映射,它只用于编译代码,看起来jest无法解析form.ts文件中的路径映射,顺便说一句,它是原始类型代码,没有库或框架,那么有什么办法解决这个问题吗?而不丢弃所有这些路径映射并恢复到long imports?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-27 12:39:10

我使用特杰斯特插件添加这种支持,然后路径在您的tsconfig.json文件中。

代码语言:javascript
运行
复制
const tsconfig = require('./tsconfig.json');
const moduleNameMapper = require('tsconfig-paths-jest')(tsconfig); // This adds the support

module.exports = {
    moduleNameMapper,
    preset: 'ts-jest',
    testEnvironment: 'node',

    rootDir: './',
...
};

然后,您的tsconfig.json中定义的路径将在测试中工作。

代码语言:javascript
运行
复制
{
    "compilerOptions": {
        "module": "commonjs",
        ...
        "paths": {
            "@LIBRARY/*": [
                "./src/library/*"
            ],
            "@TEST_LIBRARY/*": [
                "./test/library/*"
            ],
            "@APP/*": [
                "./src/*"
            ]
        }

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73861624

复制
相关文章

相似问题

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