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>
Essayez votre code comme ça:
var app = express();
app.get('/test', function(req, res) {
res.sendFile('views/test.html', {root: __dirname })
});
Utilisez res.sendFile au lieu de lire le fichier manuellement afin qu'express puisse gérer correctement le type de contenu.
Vous n'avez pas besoin de la ligne app.engine
car elle est gérée en interne par express.
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.
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