TextEncoder is not defined 문제 해결하기

최근에 팀 내 저장소 패키지 버전 올리는 작업을 하던 중 테스트 코드가 갑자기 깨져버렸습니다. 문제는 Axios 1.6.8을 1.7.0로 업데이트하면서 발생했습니다.


Axios 1.7.0으로 업데이트한 후, Jest에서 TextEncoder is not defined 에러가 발생했습니다. 이 문제는 jsdom 라이브러리가 실제 브라우저 환경을 재현하기 위해 Node.js global을 덮어씌우는 과정에서 TextEncoder가 추가되지 않아 발생하는 문제였습니다.


2019년에 jsdom 저장소에서 이미 이슈(https://github.com/jsdom/jsdom/issues/2524) 로 제기된 문제지만, 아직까지 해결되지 않고 있습니다. 그러나 다행히도 최근 Axios 1.7.1 버전에서는 TextEncoder 미지원 환경에 대한 fallback 처리가 추가되어, 현재는 문제없이 사용이 가능합니다.


한편, MSW 2.x 버전에서도 동일한 이슈가 발생한다고 합니다. 이 경우, MSW 공식 문서(https://mswjs.io/docs/migrations/1.x-to-2.x/#requestresponsetextencoder-is-not-defined-jest) 에서 제공하는 해결 방법을 따라하시면 해결이 가능합니다. 참고로 가이드엔 jest.polyfill.js로 나와있는데 폴더에 setupTests.js 파일이 있으시면 아래 코드를 추가해서 간단하게 해결이 가능합니다.


const { TextDecoder, TextEncoder } = require('node:util')

Object.defineProperties(globalThis, {
  TextDecoder: { value: TextDecoder },
  TextEncoder: { value: TextEncoder }
})

Add support for TextEncoder and TextDecoder · Issue #2524 · jsdom/jsdom

GitHub

Add support for TextEncoder and TextDecoder · Issue #2524 · jsdom/jsdom

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 5월 24일 오전 10:49

조회 1,276

댓글 0

    함께 읽은 게시물

    앱 개발 개척시대

    A

    ... 더 보기

    앱 개발 개척시대

    K리그 프로그래머

    앱 개발 개척시대

     • 

    저장 8 • 조회 1,971


    주니어 개발자들이 읽으면 좋은 테크 아티클 모음📚

    F-Lab 에서 주니어 개발자들이(사실 개발자라면 누구나) 보시면 좋을 아티클 모음을 공유해 주었네요! 검색엔진부터 비동기 처리, NoSQL 등 다양한 분야의 아티클들이 공유되어 있으니 관심있으신 분들은 보시면 좋겠습니다. F-Lab 에서 공유해주신 아티클 주제를 나열해보면 다음과 같습니다. 📌 구글이 직접 말하는 검색엔진의 원리 (tali.kr) 📌 검색 엔진은 어떻게 작동하는가 (xo.dev) 📌 네이버의 검색엔진의 특징과 알고리즘 (tistory.com) 📌 [네이버 블로그]네이버 검색의 원리 : 네이버 블... 더 보기

    주니어 개발자들이 읽으면 좋은 테크 아티클 모음

    F-Lab : 상위 1% 개발자들의 멘토링

    주니어 개발자들이 읽으면 좋은 테크 아티클 모음

     • 

    저장 156 • 조회 4,258


    서버엔지니어의 시대적 고민

    ... 더 보기


    스토리북 9 출시 소식

    ... 더 보기

    Storybook 9

    Storybook Blog

    Storybook 9