ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [NextJS] 외부 주소에서 이미지 가져올 때..
    Programming/JavaScript & TypeScript 2022. 9. 7. 08:38
    728x90

    NextJS에서 외부 주소를 통해서 이미지를 가져올 때, 다음과 같은 오류가 발생한다.

    외부 이미지 가져오면 나타나는 오류

     

     

    next.config.js에서 이미지 가져올 domain주소를 넣어줘야한다.

    아래와 같이 images에 특정 domain을 넣어준다. 이렇게 하고 npm run dev를 다시 해줘야한다. 

    images:{
      domains:['via.placeholder.com']
    }

     

    전체 코드 

    /** @type {import('next').NextConfig} */
    const nextConfig = {
      reactStrictMode: true,
      experimental: { reactRoot: true },
      swcMinify: true,
      images:{
        domains:['via.placeholder.com']
      }
    
    }
    
    module.exports = nextConfig

     

    외부 이미지 가져오는 소스 코드

    import HeadInfo from "../components/HeadInfo";
    import {GetStaticProps, InferGetStaticPropsType} from "next";
    import Image from "next/image";
    import {useEffect, useState} from 'react'
    import PhotoStyles from '../styles/Photo.module.css'
    
    type Photo = {
        albumId:number
        id:number
        title:string
        url:string
        thumbnailUrl:string
    }
    export default function Content({photos}:InferGetStaticPropsType<GetStaticProps>) {
        const [data, setData] = useState<Photo[]|null>([])
    
        useEffect(() =>{
            console.log({photos})
            setData(photos)
        }, [])
        //썸네일 url에 외부 이미지 주소가 들어있어서  next.config.js에다가 사용될 외부 주소를 넣어야함 CORS랑 비슷함
        return (<div>
            <HeadInfo title={'Content'}/>
            <h1>Photos</h1>
            <ul className={PhotoStyles.photos}>
                {data!=null && data.map(photo => (
                    <li key={photo.id}>
                        <Image src={photo.thumbnailUrl} width={200} height={200}/>
                    </li>
                ))}
    
            </ul>
            </div>
        )
    }
    export const getStaticProps:GetStaticProps = async (context) => {
        const res = await fetch('https://jsonplaceholder.typicode.com/photos?_start=0&_end=10')
        const photos = await res.json()
    
        return {
            //{posts:posts}나 posts를 하나만 써도 됨....
            props:{photos}
        }
    
    }
    

    'Programming > JavaScript & TypeScript' 카테고리의 다른 글

    ESLint 설정  (0) 2022.10.10
    [NextJS] getStaticPaths  (0) 2022.09.07
    [NextJS] getServerSideProps, getStaticProps 사용  (0) 2022.09.07
    playwright를 알아보자  (0) 2022.07.04
    Javascript에서의 this  (0) 2022.05.24
Designed by Tistory.