2013-12-03 6 views
20

Я использую эту функцию для отправки файла html клиенту, но в клиенте я ничего не получаю (пустая страница) без ошибок. Что-то не так ?, пожалуйста, помогите?nodejs отправить файл 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

является то, что весь ваш код? – mihai

+0

@mihai Я только что отредактировал – user3044147

ответ

42

Попробуйте такой код:

var app = express(); 
app.get('/test', function(req, res) { 
    res.sendFile('views/test.html', {root: __dirname }) 
}); 
  1. Использование res.sendFile вместо чтения файла вручную, чтобы выразить может обрабатывать настройки контента -Тип правильно для вас.

  2. Вам не нужна линия app.engine, так как она обрабатывается внутренне экспресс-службой.

+0

Спасибо, это работа! – user3044147

+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, если вы выбираете res.render метод в приведенном выше коде (I Письмо в формате EJS):

<%- locals.html %> 

Это все.

Таким образом, вам не нужно нарушать механизмы View Engine.

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 страница

Смежные вопросы