nodejs发送html文件到客户端

r1wp621o  于 2023-02-03  发布在  Node.js
关注(0)|答案(6)|浏览(207)

我用这个函数发送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>
66bbxpm5

66bbxpm51#

请尝试以下代码:

var app = express();
app.get('/test', function(req, res) {
    res.sendFile('views/test.html', {root: __dirname })
});

1.使用res.sendFile而不是手动阅读文件,这样express就可以为您正确地设置内容类型。
1.您不需要app.engine行,因为它由express内部处理。

1bqhqjot

1bqhqjot2#

你可以更容易地在express中呈现页面

var app   = require('express')();    
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'jade');
 
    app.get('/signup',function(req,res){      
    res.sendFile(path.join(__dirname,'/signup.html'));
    });

因此,如果你请求像http://127.0.0.1:8080/signup,它将呈现signup.html页面下的视图文件夹.

yeotifhr

yeotifhr3#

多年以后,我想通过在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)
})

然后,如果您在上面的代码中选择res.render方法,请在views/test中执行此操作(我使用EJS格式编写):

<%- locals.html %>

就这样。
这样,您就不必破坏视图引擎的排列。

emeijp43

emeijp434#

“../”被认为是恶意的,将导致ForbiddenError: Forbidden at SendStream.error...异常。
方法是使用path模块:

var path = require('path');
res.sendFile(path.resolve('views/auth/success.html'));
6yt4nkrj

6yt4nkrj5#

按照这个简单的过程发送html文件-〉res.sendfile(“views/home.html”);//不要在sendFile中使用大写字母F,您必须使用小写字母f,例如:发送文件();

qkf9rpyu

qkf9rpyu6#

var app = express();
app.get('/test', function(req, res) {
    res.sendFile(__dirname + "/view/test.html")
});

这里的“__dirname”给出了文件保存的当前路径。所以在res.sendFile()中,我们首先通过__dirname +(然后我们定位应该显示在主页上的特定文件,即)“vies/test.html”来告诉我们当前的位置。

相关问题