Nextjs+Typescript 에서 import image하기

Eddy·2022년 10월 31일
0

Next.js

목록 보기
2/3
post-thumbnail

Module parse failed: Unexpected character ' ' (1:0)

날 하루종일 괴롭힌 에러
next-images도 하고 Next/image도 써보고 next.config.js에 모듈도 추가해주고 node도 업데이틀하고 스택오버플로우와 구글링으로 모든걸 다 해봤지만 에러는 여전했다.
잠시 휴식 후 천천히 찾아보니 Typescript를 사용한다면 추가적인 설정들이 필요하다.

next-images 설치

package.json에 next-images가 없다면 next-images를 설치해준다
npm install --save next-images

next-env.d.ts

next-env.d.ts 파일에 아래의 코드를 추가해준다. 없다면 root 경로에 생성한다.

/// <reference types="next-images" />

/// 도 포함

next.config.js

next.config.js 파일에 아래의 코드를 추가해준다. 없다면 root 경로에 생성한다.

const withImages = require('next-images');
module.exports = withImages();

tsconfig.json

tsconfig.json 에서 compilerOptions 부분에 typeRoots를 설정해준다.

{
  "compilerOptions": {
    "target": "es5",
    // 생략
    "typeRoots": ["./node_modules/@types", "./@types"]
  },

custom.d.ts

custom.d.ts 파일에 아래의 코드를 추가해준다. 없다면 root 경로에 생성한다.
파일이름은 꼭 custom.d.ts 이 아니여도 된다. ex) index.d.ts

declare module '*.png' {
  const src: string;
  export default src;
}

Import image

이제 리액트에서 처럼 Import image가 가능하다.
import logo from '../../Icon/Icon.png';

function Header() {
    return (
      <img src={Icon} alt="logo" />
    )
}

export default Header;

추가

여전히 next/image를 이용한 Image 태그(컴포넌트)는 타입에러가 생겨 기존처럼 img 태그를 사용한다.
svg 파일도 사용하기 위해 모듈을 추가해줬다.

0개의 댓글