Dies ist meine server.js
-Datei:
var express = require('express'),
app = express();
app
.use(express.static('./public'))
.get('*',function (req,res) {
res.sendfile('/public/main.html');
})
.listen(3000);
Dies ist mein 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>
Und die Ordnerstruktur:
Da sowohl der Server als auch die Indexdatei INSIDE das "public" -Verzeichnis sind, können Sie einfach Folgendes verwenden:
res.sendfile('./main.html');
Um die Frage in den Kommentaren zu beantworten: In Express 4.x wurde die sendfile
-Methode durch die sendFile
-Methode (alle Kleinbuchstaben -> camelCase) ersetzt. Wahrscheinlich nur ein Versehen in frühen Versionen, das in letzterer behoben wurde.
res.sendfile('/public/main.html');
sollte in geändert werden
res.sendfile('./public/main.html');
Diese Lösung funktioniert für mich:
res.sendfile('./main.html');
Ich hatte ein ähnliches Problem, als ich auf dist
folder ..__ verwies. Der relative Pfad zu index.html war:
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'dist/project-name/index.html'));
});
Benutze einfach folgendes: res.sendFile(__dirname + '/main.html');
Es wird definitiv funktionieren. :)
server.js
const express = require('express');
const app = express();
app.use(express.static(__dirname + '/dist/projectName'));
app.post('/*', function(req, res){
res.sendFile(__dirname + '/dist/projectName/index.html');
});
app.listen(4200);
Sie haben das dot verpasst. Beachten Sie das relative Verzeichnis
res.sendfile('./public/main.html');
Ich hatte das gleiche Problem. Nachdem ich Heroku eine E-Mail geschickt hatte, war mein Fall ein Problem mit der Empfindlichkeit. Eine meiner Dateien war in Großbuchstaben, und ich musste von dort aus Anpassungen vornehmen.
Für mich mit dem "." im Pfad funktionierte nicht, stattdessen habe ich es angepasst:
res.sendFile(__dirname + '/public/main.html');