この関数を使用してhtmlファイルをクライアントに送信しますが、クライアントではエラーなしで何も表示されません(空白ページ)。何かおかしいですか?
var express = require('express');
var fs = require('fs');
var app = express();
app.set('view engine', 'jade');
app.engine('jade', require('jade').__express);
app.get('/test', function(req, res) {
fs.readFile(__dirname + '/views/test.html', 'utf8', function(err, text){
res.send(text);
});
var port = process.env.PORT || 80;
var server = app.listen(port);
console.log('Express app started on port ' + port);
私のtest.htmlファイル
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style something here </style>
<title>Test</title>
<script src="..."></script>
</head>
<body>
<div> Somthing here </div>
<script type="text/javascript">
//something here
</script>
</body></html>
次のようなコードを試してください。
var app = express();
app.get('/test', function(req, res) {
res.sendFile('views/test.html', {root: __dirname })
});
ファイルを手動で読み取る代わりに res.sendFile を使用して、expressがコンテンツタイプを適切に設定できるようにします。
app.engine
行は、エクスプレスによって内部的に処理されるため、必要ありません。
数年後、Express.js
でviewエンジンを使用して別のアプローチを追加したい
var fs = require('fs');
app.get('/test', function(req, res, next) {
var html = fs.readFileSync('./html/test.html', 'utf8')
res.render('test', { html: html })
// or res.send(html)
})
次に、上記のコードでviews/test
メソッドを選択した場合、res.render
でそれを行います(私はEJS形式で書いています)。
<%- locals.html %>
それで全部です。
このように、View Engineの配置を壊す必要はありません。
エクスプレスでページをより簡単にレンダリングできます
var app = require('express')(); //to install express write "npm install express"
app.get('/signup',function(req,res){
res.sendFile(path.join(__dirname+'/signup.html'));
});
したがって、
http://127.0.0.1:8080/signup
signup.htmlページをレンダリングすること