-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
오류 발생 도움 필요
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)
답변을 작성해보세요.
0
인프런 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
폴더 내의 파일 위치를 다시 한 번 점검해보시기 바랍니다.
답변 1