Express 프레임 워크를 사용하여 시작하려고하는 기본 node.js 앱이 있습니다. 파일 이있는 views
폴더가 index.html
있습니다. 그러나 웹 브라우저를로드 할 때 다음 오류가 발생합니다.
오류 : ‘html’모듈을 찾을 수 없습니다
아래는 내 코드입니다.
var express = require('express');
var app = express.createServer();
app.use(express.staticProvider(__dirname + '/public'));
app.get('/', function(req, res) {
res.render('index.html');
});
app.listen(8080, '127.0.0.1')
내가 여기서 무엇을 놓치고 있습니까?
답변
옥에 일반 HTML 페이지를 포함시킬 수 있습니다.
views / index.jade에서
include plain.html
views / plain.html에서
<!DOCTYPE html>
...
app.js는 여전히 옥을 렌더링 할 수 있습니다.
res.render(index)
답변
이 답변 중 대부분이 구식입니다.
express 3.0.0 및 3.1.0을 사용하면 다음이 작동합니다.
app.set('views', __dirname + '/views');
app.engine('html', require('ejs').renderFile);
express 3.4+에 대한 대안 구문과주의 사항은 아래 주석을 참조하십시오.
app.set('view engine', 'ejs');
그런 다음 다음과 같은 작업을 수행 할 수 있습니다.
app.get('/about', function (req, res)
{
res.render('about.html');
});
views
하위 폴더에 보기가 있고 ejs
노드 모듈 을 설치했다고 가정합니다 . 그렇지 않은 경우 노드 콘솔에서 다음을 실행하십시오.
npm install ejs --save
답변
Express.js 가이드 : 뷰 렌더링에서
보기 파일 이름의 형식은 취
Express.ENGINE
,ENGINE
해야합니다 모듈의 이름입니다. 예를 들어, 뷰layout.ejs
는 뷰 시스템에를 전달할 것입니다.require('ejs')
로드되는 모듈은 Express를 준수하기 위해 메소드exports.render(str, options)
를 내 보내야 하지만app.register()
엔진을 파일 확장자에 맵핑하는 데 사용될foo.html
수 있으므로 jade에 의해 렌더링 될 수 있습니다.
따라서 간단한 렌더러를 만들거나 jade를 사용하십시오.
app.register('.html', require('jade'));
Express 3에서는이 방법의 이름이 바뀌 었습니다.
app.engine
답변
HTML 파일을 읽고 보낼 수도 있습니다.
app.get('/', (req, res) => {
fs.readFile(__dirname + '/public/index.html', 'utf8', (err, text) => {
res.send(text);
});
});
답변
이 시도. 그것은 나를 위해 작동합니다.
app.configure(function(){
.....
// disable layout
app.set("view options", {layout: false});
// make a custom html template
app.register('.html', {
compile: function(str, options){
return function(locals){
return str;
};
}
});
});
....
app.get('/', function(req, res){
res.render("index.html");
});
답변
app.get('/', function (req, res) {
res.sendfile(__dirname + '/public/index.html');
});
답변
express@~3.0.0을 사용하는 경우 예제에서 아래 행을 변경하십시오.
app.use(express.staticProvider(__dirname + '/public'));
이런 식으로 :
app.set("view options", {layout: false});
app.use(express.static(__dirname + '/public'));
Express API 페이지 에 설명 된대로 만들었으며 매력처럼 작동합니다. 이 설정을 사용하면 추가 코드를 작성할 필요가 없으므로 마이크로 프로덕션 또는 테스트에 사용하기에 충분히 쉬워집니다.
전체 코드는 다음과 같습니다.
var express = require('express');
var app = express.createServer();
app.set("view options", {layout: false});
app.use(express.static(__dirname + '/public'));
app.get('/', function(req, res) {
res.render('index.html');
});
app.listen(8080, '127.0.0.1')