我使用此函数将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>
答案 0 :(得分:52)
尝试使用以下代码:
var app = express();
app.get('/test', function(req, res) {
res.sendFile('views/test.html', {root: __dirname })
});
使用res.sendFile而不是手动阅读文件,因此express可以为您正确设置内容类型。
您不需要app.engine
行,因为快递是由内部处理的。
答案 1 :(得分:3)
多年后,我想在Express.js
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
方法(我用EJS格式编写),请在res.render
中执行此操作:
<%- locals.html %>
就是这样。
通过这种方式,您无需中断View Engine的安排。
答案 2 :(得分:0)
您可以更轻松地在快递中呈现页面
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页面
答案 3 :(得分:0)
“../”被认为是恶意的,会导致 ForbiddenError: Forbidden at SendStream.error...
异常。
要走的路是使用路径模块:
var path = require('path');
res.sendFile(path.resolve('views/auth/success.html'));