2016-07-27 12 views
0
app.get(`/`, (req, res, next) => { 
     console.log(`in/get`); 
     const indexHtml = path.resolve(__dirname + '/../public/index.html'); 
     res.sendFile(indexHtml); 
     next(); 
    }); 

Ich versuche, diese index.html auf meiner Home-Route mit Express angezeigt werden, aber es wird nicht geladen. Ich bekomme das Konsolenprotokoll und ich habe indexHTML Konsole protokolliert, um sicherzustellen, dass der Pfad korrekt ist, aber alles, was ich bekomme, ist ein Fehler, den ich nicht bekommen kann. Alle meine anderen Routen, die es gebracht werden, funktionieren a-ok. Nur nicht dieser Typ.NodeJS Antwort nicht senden index.html

+1

Können Sie nicht einfach [express.static] (http://expressjs.com/en/4x/api.html#express.static) verwenden? – MayorMonty

+0

Es fehlt ein Anführungszeichen am Anfang dieses Strings: '/../ public/index.html' Dies hätte einen sichtbaren Fehler verursachen sollen. Wahrscheinlich möchten Sie auch, dass der Pfad ohne den führenden Schrägstrich "../ public/index.html" lautet und "path.join()', nicht "path.resolve()' verwenden soll. – jfriend00

+1

Und viele Ihrer Anführungszeichen sehen falsch aus. Sie sehen aus wie Rückmarkierungen, keine regulären einfachen Anführungszeichen. – jfriend00

Antwort

1

Entfernen Sie den Anruf zu next() nach res.sendFile(). Sie wollen die res.sendFile() die Antwort vollständig behandeln, aber Aufruf next() übergibt die Kontrolle an andere Handler, wahrscheinlich Ende in der 404-Handler und weil das nicht die Festplatte lesen muss, wird es verarbeitet, bevor res.sendFile() tut es seine Arbeit.

Wenn Sie die Antwort senden, möchten Sie nicht next() aufrufen, weil Sie keine weiteren Anforderungshandler in der Kette mehr ausführen möchten.

Verwandte Themen