nodejs发送html文件给客户端

我使用这个函数发送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 }) }); 
  1. 使用res.sendFile而不是手动读取文件,以便expression可以正确处理设置内容types。

  2. 你不需要app.engine行,因为这是由express内部处理。

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

那么,如果在上面的代码中select了res.render方法(我正在使用EJS格式),那么在views/test这样做:

 <%- locals.html %> 

就这样。

这样,你不需要打破你的视图引擎安排。

你可以更容易地expression页面

 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页面