我用这个函数发送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>
6条答案
按热度按时间66bbxpm51#
请尝试以下代码:
1.使用res.sendFile而不是手动阅读文件,这样express就可以为您正确地设置内容类型。
1.您不需要
app.engine
行,因为它由express内部处理。1bqhqjot2#
你可以更容易地在express中呈现页面
因此,如果你请求像
http://127.0.0.1:8080/signup
,它将呈现signup.html页面下的视图文件夹.yeotifhr3#
多年以后,我想通过在
Express.js
中使用view引擎来添加另一种方法然后,如果您在上面的代码中选择
res.render
方法,请在views/test
中执行此操作(我使用EJS格式编写):就这样。
这样,您就不必破坏视图引擎的排列。
emeijp434#
“../”被认为是恶意的,将导致
ForbiddenError: Forbidden at SendStream.error...
异常。方法是使用path模块:
6yt4nkrj5#
按照这个简单的过程发送html文件-〉res.sendfile(“views/home.html”);//不要在sendFile中使用大写字母F,您必须使用小写字母f,例如:发送文件();
qkf9rpyu6#
这里的“__dirname”给出了文件保存的当前路径。所以在res.sendFile()中,我们首先通过__dirname +(然后我们定位应该显示在主页上的特定文件,即)“vies/test.html”来告诉我们当前的位置。