2016-03-27 15 views
0

Ich versuche, eine Datei mit express in NodeJS Server zu senden. Auf localhost funktioniert es, aber wenn ich meine Anwendung zu OpenShift dränge, habe ich einen Fehler: Internal Server Error.Datei kann nicht mit res.sendFile an OpenShift gesendet werden

Code:

var path = require('path'); 
app.get('/load', function(req, res) { 
    //res.send("TRY"); 
    res.sendFile(path.resolve('bg95.png')); 
}); 

Wenn ich versuche einfach Text zu senden, ist es ok. Also, wo könnte das Problem sein und wie kann man es lösen?

+0

Sind Sie sicher, dass 'bg95.png' im selben Verzeichnis wie Ihr Skript ist? – mscdex

+0

@mscdex ja, ist es. –

+0

Wenn Sie einen Express-Fehlerhandler hinzufügen (z. B. 'app.use (function (err, req, res, next)) {console.log (err.stack); next (err);}') nach Ihrem Routen-Handler, was tut der Fehler sagt? – mscdex

Antwort

0

Das Problem liegt wahrscheinlich daran, dass Sie in einem anderen Arbeitsverzeichnis ausgeführt werden. path.resolve verwendet das aktuelle Arbeitsverzeichnis, sofern Sie kein from Argument angeben. Versuchen Sie ersetzen:

res.sendFile(path.resolve('bg95.png')); 

mit

res.sendFile(path.join(__dirname, 'bg95.png')); 
+0

Das hat nicht geholfen; ( –

0

Ich hatte ein ähnliches Problem hatte ich eine Probe index.html Datei in meinem Projektordner. Ich habe versucht res.sendFile('./dashboard.html'), res.sendFile('./app-root/repo/dashboard.html'), etc. und keiner von ihnen hat funktioniert. Stellen Sie sicher, dass Ihre Express-Version v4.8.0 oder höher ist. Dann fand ich die unten genannten Link, und verwendet, um die

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

wo __dirname, die ich glaube, gibt uns den Arbeitsweg Ordner des Openshift. Dies half mir beim Anzeigen der Seite.

https://scotch.io/tutorials/use-expressjs-to-deliver-html-files

prüfen Sie diesen Link aus. Eine einfache Demonstration, wie man es benutzt, wenn Sie dem folgen, können Sie es zum Laufen bringen. ;)

0

Sie sollten die Express-Version in Abhängigkeit aktualisieren. Wie folgt aus:

"dependencies": { 
    "express": "4.10.2", 
    "socket.io": "1.3.7" 
    } 

Es scheint, das Problem mit Express-Version ist, die nicht sendfile nicht unterstützt.

Verwandte Themen