[Vite + TS] Vite에서 svg 파일을 못 읽을 때(@svgr/rollup 사용)

2024. 3. 2. 00:56·Frontend

지금까지는 Webpack(Create-react-app) 환경에서 TypeScript를 실행했었기에 custom.d.ts(혹은 global.d.ts)에서

declare module "*.svg" {
  import React = require("react");

  export const ReactComponent: React.FC<React.SVGProps<SVGSVGElement>>;
  const src: string;
  export default src;
}

위와 같이 작성하면 svg 파일이 잘 실행이 되었었다.

 


그런데 이번에 새로 프로젝트를 할 때 아래와 같이 svg 파일을 사용하려고 했는데,

 

import { ReactComponent as ~~~Icon} from '../../ ........생략'  

 

위와 같이 ReactComponent로 불러올려고 했는데 svg 타입을 찾을 수 없다고 자꾸 오류가 뜨는 것이었다.

내가 설정을 잘못했나싶어서 자꾸 찾아봤지만, 저번의 설정과 딱히 다른 점을 찾아볼 수는 없었다.

 

그러다가 혹시 Create-React-App이 아닌 Vite를 사용하면 타입 설정을 따로 해줘야하나? 하는 의문이 머리에 스치게 되었고, 구글에 검색을 해보니 그 생각이 사실임을 알게 되었다.

 

그리고 구글에 검색하면 뜨는 방법들로 설정을 해주었다.

vite-plugin-svgr을 설치하고, vite.config.ts의 plugins에서 svgr()을 설치해주었다.

하지만 오류는 여전히 해결되지 않았다. 구글의 다른 글들을 살펴봐서 따로 적용을 해주어도 마찬가지였다.

 

왜 그러지하는 의문을 가지고 계속 검색을 하다가 stackoverflow의 글 하나를 보게 되었는데, 지금까지 본 글들의 방법과는 다른 신박한 방법을 제시했다. 바로 npm 에서 @svgr/rollup을 설치한 뒤 적용하라는 것이었다.

 

@svgr/rollup을 설치해보라는 stackoverflow 게시글

 

링크: https://stackoverflow.com/questions/70309561/unable-to-import-svg-with-vite-as-reactcomponent

 

Unable to import SVG with Vite as ReactComponent

Tried to use this library: vite-plugin-react-svg and had no success by importing it like: import { ExternalLink } from 'assets/svg/link-external.svg?component'; Are there any workarounds for this ...

stackoverflow.com

 

@svgr/rollup을 설치한 뒤에 설정을 적용해보니 Typescript가 svg 파일을 별 문제없이 읽을 수 있었다!

(왜 vite-plugin-svgr은 적용이 안되었을까? 아직도 그 이유가 궁금하다.)

저작자표시 비영리 변경금지 (새창열림)

'Frontend' 카테고리의 다른 글

[Next.js] Next.js(SSR 환경)에서 css 애니메이션이 작동 안하는 이유  (1) 2024.07.12
[HTML] HTML 구조, <script> 태그, HTML 박스모델 등에 대한 요약  (0) 2024.03.14
[React, TS] 프로젝트를 진행하며 상태 관리에 대해 알게 된 것들  (2) 2024.01.13
[Typescript] 강의 듣고 Typescript 개념 간단하게 정리  (1) 2023.12.27
[프론트엔드] 내가 보려고 쓰는 ESlint, Prettier 세팅  (0) 2023.12.16
'Frontend' 카테고리의 다른 글
  • [Next.js] Next.js(SSR 환경)에서 css 애니메이션이 작동 안하는 이유
  • [HTML] HTML 구조, <script> 태그, HTML 박스모델 등에 대한 요약
  • [React, TS] 프로젝트를 진행하며 상태 관리에 대해 알게 된 것들
  • [Typescript] 강의 듣고 Typescript 개념 간단하게 정리
퀵차분
퀵차분
Web Developer 🥐
  • 퀵차분
    QC's Devlog
    퀵차분
  • 전체
    오늘
    어제
    • 분류 전체보기 (175) N
      • Frontend (30) N
      • Fedify (4)
      • Study (42)
        • NestJS (2)
        • Node.js (3)
        • Modern JS Deep Dive (13)
        • SQL (1)
        • Network (1)
        • 프롬프트 엔지니어링 (4)
        • 인공지능 (9)
        • 시스템프로그래밍 (11)
        • 선형대수학 (1)
      • Intern (4)
      • KUIT (21)
      • Algorithm (48)
        • Baekjoon(C++) (26)
        • Programmers(JavaScript) (22)
      • 우아한테크코스(프리코스) (4)
      • Project (8)
        • crohasang_page (1)
        • PROlog (4)
        • Nomadcoder (2)
      • 생각 (4)
      • Event (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    react
    KUIT
    알고리즘
    typescript
    프로그래머스 자바스크립트
    오블완
    fedify
    타입스크립트
    프로그래머스
    next.js
    HTML
    티스토리챌린지
    음악추천
    인공지능
    javascript
    시스템프로그래밍
    백준
    자바스크립트
    프론트엔드
    리액트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
퀵차분
[Vite + TS] Vite에서 svg 파일을 못 읽을 때(@svgr/rollup 사용)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.