개요
node.js에서 routing되는 view를 html로 뿌려주고 싶었다. 보통의 view는 ejs를 사용하는 것 같은데, 만드는 것이 고작 나만 볼 test page이기에 ejs까진 필요가 없었다. 그런데 웬일? 이렇게 단순한 작업에도 에러 등장.
Error: No default engine was specified and no extension was provided
그렇다. node.js express engine으로 html file을 load할 때 위의 에러가 발생했다. 구글링 결과, 두 가지의 해결 방법을 찾아냈다. 사실 두 가지 방법 외에 sendFile로 해당 html file을 그대로 뿌려 주는 방법도 있다.
1. html을 ejs로 rendering(추천)
-
ejs
를 설치한다.1
npm install ejs
-
화면 엔진을
ejs
로 설정한다.1
2
3// 화면 engine을 ejs로 설정
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);
이대로 사용하면 된다. ^^;; full code는 아래와 같다.
1 | var express = require('express'); |
1 | var express = require('express'); |
2. consolidate
, mustache
모듈 설치
잘은 모르겠지만, mustache
가 html file을 ejs로 렌더링하는 것 같다.
-
프로젝트 루트 폴더에
consolidate
와mustache
를 설치한다.1
2npm install consolidate
npm install mustache -
server 파일에
consolidate
을 추가한다.1
2// 변수 이름은 마음대로 정해도 됨.
var engines = require('consolidate'); -
화면 engine을 html로 설정한다
1
2
3// 화면 engine을 html로 설정
app.engine('html', engines.mustache);
app.set('view engine', 'html');
이것도 이렇게 끝! 나는 다음과 같이 사용해 보았다.
1 | var express = require('express'); |
1 | var express = require('express'); |
기회가 되면 default setting을 정리해서 남기고 싶은데, 연말이라 그런지 너무 귀찮다. ^^;
참고
-
stackoverflow - NodeJS, how to render static HTML with Express 4?: html file을 sendFile로 뿌리는 방법
-
stackoverflow - Mustache(-like) template engine for Express?