Ceci est mon fichier server.js
:
var express = require('express'),
app = express();
app
.use(express.static('./public'))
.get('*',function (req,res) {
res.sendfile('/public/main.html');
})
.listen(3000);
C'est mon main.html
:
<!DOCTYPE html>
<html>
<head>
<titel>Contacts</titel>
<base href'/'>
</head>
<body>
<div class="container">
<div class="page-header">
<h1>Contatcs</h1>
</div>
</div>
</body>
</html>
Et la structure du dossier:
Puisque le serveur et le fichier d'index sont tous deux DANS le répertoire "public", vous pouvez simplement utiliser:
res.sendfile('./main.html');
Pour répondre à la question dans les commentaires: Dans Express 4.x, la méthode sendfile
a été remplacée par la méthode sendFile
(all minuscule -> camelCase). Probablement juste un oubli dans les premières versions, qui a été corrigé dans la dernière.
res.sendfile('/public/main.html');
devrait être changé en
res.sendfile('./public/main.html');
Cette solution fonctionne pour moi:
res.sendfile('./main.html');
J'ai eu un problème similaire lorsque j'ai fait référence au dossier dist
.
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'dist/project-name/index.html'));
});
Vous avez manqué le point . Gardez à l'esprit le répertoire relatif est
res.sendfile('./public/main.html');
J'ai eu le même problème. Après avoir envoyé un courriel à heroku, le mien était un problème de sensibilité à la casse. Un de mes fichiers était en majuscule et je devais faire des ajustements à partir de là.
Pour moi en utilisant le "." dans le chemin n'a pas fonctionné, à la place, je l'ai modifié comme suit:
res.sendFile(__dirname + '/public/main.html');