<aside> 🧑🏻‍🏫 Next.js에는 SPA에서 하나의 html역할을 하는 index.html이 물리적으로 존재하지 않습니다.

하지만, 링크로 font 파일을 가져오거나, script 태그로만 넣을 수 있는 라이브러리가 필요하거나, Google Analytics 같은 것을 설정할 때 html의 head태그와 body태그가 필요합니다.

Next.js에서 이 역할을 하는 것이 _document.js입니다.

</aside>

_document.tsx 파일 추가


대부분의 상황에서 필요할 수 밖에 없으므로 _document.js를 추가해보도록 하겠습니다. pages폴더 바로 밑에 _document.tsx 이름으로 생성해야 하며, 다음 코드와 똑같이 작성해주세요.

import Document, { DocumentContext, Html, Head, Main, NextScript } from 'next/document';

class MyDocument extends Document {

	static async getInitialProps(ctx: DocumentContext) {
		const initialProps = await Document.getInitialProps(ctx);
		return { ...initialProps }
	}

	render() {
		return (
			<Html>
			<Head />
			<body>
			<Main />
			<NextScript />
			</body>
			</Html>
		)
	}
}

export default MyDocument;

_document.tsx 사용 예제


//생략

render() {
	return (
		<Html>
			<Head>
				<link
					href="<https://fonts.googleapis.com/css?family=Noto+Sans+KR|Poppins&display=swap>"
					rel="stylesheet"
				/>
			</Head>
			<body>
				<Main />
				<NextScript />
			</body>
		</Html>
	);
}