web-dev-qa-db-fra.com

nodejs envoie le fichier html au client

J'utilise cette fonction pour envoyer un fichier HTML au client, mais dans le client je ne reçois rien (page vierge) sans erreur. Quelque chose que je me trompe?, Aidez s'il vous plaît?

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);

Mon fichier 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>
24
user3044147

Essayez votre code comme ça:

var app = express();
app.get('/test', function(req, res) {
    res.sendFile('views/test.html', {root: __dirname })
});
  1. Utilisez res.sendFile au lieu de lire le fichier manuellement afin qu'express puisse gérer correctement le type de contenu.

  2. Vous n'avez pas besoin de la ligne app.engine car elle est gérée en interne par express.

49
Tim Brown

Après des années, je souhaite ajouter une autre approche en utilisant un moteur view dans 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)
})

Ensuite, faites cela dans votre views/test si vous choisissez la méthode res.render au code ci-dessus (j'écris au format EJS):

<%- locals.html %>

C'est tout.

De cette façon, vous n'avez pas besoin de casser vos arrangements avec View Engine.

3
efkan

vous pouvez rendre la page en express plus facilement 

var app   = require('express')();        //to install express write "npm install express"

app.get('/signup',function(req,res){

 res.sendFile(path.join(__dirname+'/signup.html'));

});

donc, si vous demandez comme http://127.0.0.1:8080/signup, la page signup.html

0
Adiii