programing

Jest transform Ignore Patterns가 작동하지 않습니다.

lastmemo 2023. 3. 17. 19:33
반응형

Jest transform Ignore Patterns가 작동하지 않습니다.

저는 이것에 관한 다른 질문이나 Github의 다른 프로젝트를 오랫동안 살펴보았지만, 어느 대답도 제게는 효과가 없는 것 같습니다.

프로젝트에서 서드파티 라이브러리를 로드하고 있는데 Jest 테스트 실행 시 오류가 발생합니다.

export default portalCommunication;
^^^^^^

SyntaxError: Unexpected token export

> 1 | import portalCommunication from 'mathletics-portal-communication-service';

이 라이브러리를 변환하기 위해 여러 가지 방법으로 Jest 설정을 업데이트하려고 했지만 항상 같은 오류가 발생합니다.

현재 jeast.config.js 파일입니다.

module.exports = {
    moduleNameMapper: {
        '\\.(css|scss)$': 'identity-obj-proxy',
        '\\.svg$': '<rootDir>/test/mocks/svg-mock.js'
    },
    setupFiles: ['./test/test-setup.js'],
    transformIgnorePatterns: [
        '<rootDir>/node_modules/(?!mathletics-portal-communication-service)'
    ]
};

또한 이 mathletics-portal-communication-service 디렉토리에 대해 babel-jest를 실행하기 위한 변환 속성을 추가해 보았습니다.

도와주세요!

transformIgnorePatterns내가 바뀌기 전까지 나한테는 효과가 없었어.babelrc로.babel.config.js, 다음과 같이 합니다.

module.exports = {
    "presets": [
        "@babel/preset-env"
    ]
};

이 코멘트에서는, https://github.com/facebook/jest/issues/6229#issuecomment-403539460 를 참조해 주세요.

현시점에서의 회피책으로 설정을 변경하여moduleNameMapper대신 해당 라이브러리의 모의 클래스를 로드하는 옵션입니다.저는 이 제품을 사용하는 것이 더 좋았습니다.transformIgnorePatterns그 대신 어떤 아이디어라도 주시면 감사하겠습니다.

새 구성:

module.exports = {
    moduleNameMapper: {
        '\\.(css|scss)$': 'identity-obj-proxy',
        '\\.svg$': '<rootDir>/test/mocks/svg-mock.js',
        'mathletics-portal-communication-service': '<rootDir>/test/mocks/mathletics-portal-communication-service-mock.js'
    },
    setupFiles: ['./test/test-setup.js']
};

후행 슬래시를 추가하면 다음과 같은 문제가 해결됩니다.

{
    // ...
    transformIgnorePatterns: [
        '<rootDir>/node_modules/(?!mathletics-portal-communication-service/)'
    ]
};

저희 조직의 다른 팀이 공통 모듈을 추가했습니다.이것은 전사가 되지 않았기 때문에 문제가 발생하였습니다.

저는 https://babeljs.io/docs/en/configuration#whats-your-use-case을 팔로우했습니다.

  1. 변환 완료.babelrc로.babel.config.json
  2. jeast config에 다음과 같이 추가되었습니다.transformIgnorePatterns: ['/node_modules/(?!(@companyName)/).*/'],

이것으로 내 문제는 해결되었다.

의 사용법일 수 있습니다.rootDir. 시험해 보세요.

    "transformIgnorePatterns": [
      "node_modules/(?!(mathletics-portal-communication-service))"
    ]

언급URL : https://stackoverflow.com/questions/50147915/jest-transformignorepatterns-not-working

반응형