• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

오류 발생 도움 필요

24.02.07 11:05 작성 24.02.07 12:19 수정 조회수 87

0

강의제목: Node.js 노드 빠르게 훑어보기: 서버부터 DB까지

따라 하다 문제가 발생한 회차: 13강 화면 구성 - Template Engine 확장

npm install nunjucks를 하고..

강의에서 하라는 대로 하면서 views 폴더에서 base.html을 수정하고, write.html을 작성하고

base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!--  공통된 요소  -->
    <nav>
        <a href="">Logo</a>
        <a href="">글 작성</a>
    </nav>
    <!-- 바뀌는 요소 -->
    {% block content %}
    {% endblock %}
    <footer>
        <p>Footer</p>
    </footer>
</body>
</html>

write.html

{% extends 'base.html' %}

{% block content %}
<h1>글 작성 페이지입니다.</h1>
{% endblock %}

index.js도 수정하고 npm run dev 를 해보면..

index.js

import express from 'express';
import path from 'path';
import nunjucks from 'nunjucks';

const __dirname = path.resolve();

const app = express();

//view engine set
app.set('view engine', 'html');//main.html->main(.html)

//nunjucks
nunjucks.configure('views', {
    watch: true, //html파일이 수정될 경우, 다시 반영 후 렌더링
    express: app
})

//middleware
//main page GET
app.get('/', (req, res)=>{
    res.sendFile(__dirname + '/public/main.html');
});

app.get('/write', (req, res) => {
    res.render('write.html');
})

app.listen(3000, ()=> {
    console.log('Server is running');
});

127.0.0.1:3000에서는 main page라고 그냥 나오지만

127.0.0.1:3000/write를 실행해보면 아래와 같은 에러메시지가 나옵니다.

혹시 해결책을 아시는 분은 답변 부탁드립니다.

사실 첨부파일 zip으로 올릴 수 있으면 한꺼번에 올리고 싶은데

링크 첨부밖에 없어서 일단 이렇게 올립니다.

이거 질문란을 못 찾아서 일반 커뮤니티에 올렸다가 강의 페이지 들어오니 질문란이 있는 거 같아서 백업하여 여기다 다시 올립니다.

Error: template not found: write.html
    at createTemplate (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\environment.js:234:15)
    at next (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\lib.js:260:7)
    at handle (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\environment.js:267:11)
    at C:\Users\SBA\user\node_study\my_app\node_modules\nunjucks\src\environment.js:276:9
    at next (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\lib.js:258:7)
    at Object.asyncIter (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\lib.js:263:3)
    at Environment.getTemplate (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\environment.js:259:9)
    at Environment.render (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\environment.js:295:10)
    at NunjucksView.render (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\express-app.js:18:9)
    at tryRender (C:\Users\user\node\node_study\my_app\node_modules\express\lib\application.js:657:10)

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.02.08

안녕하세요, 인프런 AI 인턴입니다.
닉닉님, write.html 파일이 views 폴더 안에 있는지 다시 한 번 확인해 보셔야 할 것 같습니다. 에러 메시지에 나와 있는 “Error: template not found: write.html”는 Nunjucks 템플릿 엔진이 views 폴더 내에 write.html 파일을 찾지 못했다는 의미입니다.

파일 위치를 확인하는 것 외에도, 아래 몇 가지 점을 확인해보시면 좋을 것 같습니다.
1. views 폴더가 nunjucks.configure의 첫 번째 인자로 제대로 설정되어 있는지 확인해보세요. 현재 프로젝트의 디렉토리 구조에 맞게 설정되어 있어야 합니다.
2. 코드를 변경한 후 서버를 재시작하셨는지 확인해보세요. 때때로 변동사항이 서버에 바로 반영되지 않을 수 있습니다.
3. 파일 시스템의 대소문자 구분이 문제가 될 수도 있습니다. Windows는 대소문자를 구분하지 않지만, Linux나 macOS는 구분하기 때문에, 이 부분도 살펴보시면 좋습니다.

위 사항들을 확인 후에도 문제가 해결되지 않는다면, 프로젝트의 폴더 구조와 views 폴더 내의 파일 위치를 다시 한 번 점검해보시기 바랍니다.