2017-02-20 6 views
0

Ich habe Probleme mit Express, ich kann nicht scheinen statische Dateien zu dienen. Wenn ich tue:ExpressJS Statisch funktioniert nicht

app.use('/*', express.static(DIST_FILEPATH)); 

es mir ein 301 oder etwas gibt, im Grunde findet die Datei nicht (ich habe es im Inkognito-Modus auch versucht, chasing/was auch immer Probleme zu vermeiden).

Aber aus irgendeinem Grund, wenn ich tun:

app.use('/*', function (req, res, next) { 
    console.log(req.originalUrl); 
    console.log(DIST_FILEPATH); 
    res.sendFile(path.join(DIST_FILEPATH, req.originalUrl)); 
}); 

Es funktioniert nur gut und beide Pfade korrekt. Warum passiert das und wie kann ich es lösen?

Express Version: 4.14.1

+0

Sie müssen keinen Routenpfad für die statische Dateibereitstellung angeben, verwenden Sie einfach: 'app.use (express.static (DIST_FILEPATH));' – mscdex

+0

@mscdex Ich habe 3 statische Dateipfade (Knotenmodule, öffentliche und dist), aber das Hinzufügen von dist ohne einen Pfad am Ende könnte funktionieren: -? – user1640736

+0

Ja, Sie müssen nur 'app.use (express.static (DIST_FILEPATH)); verwenden;' und es werden nur Server-Dateien gespeichert. –

Antwort

0

Ihr Problem ist, dass Sie die Syntax etwas weg haben. Was Sie tun können, wenn Sie nur statische Dateien des Servers verwenden möchten, verwenden Sie app.use(express.static(path.join(__dirname)));, dann, wenn Sie zu http://localhost:3000/ gehen, können Sie Dinge wie index.html hinzufügen, so dass Sie Ihre html Datei sehen können. Hier ist ein Beispiel für einen einfachen Express-Server, die statischen Dateien dient:

var express = require('express'); 
var path = require('path'); 
var app = express(); 

app.set('port', 3000); 


app.use(express.static(path.join(__dirname))); //here you can change your path. for example you could add + 'public' if all of your files where in the 'public' directory 

var server = app.listen(app.get('port'), function() { 
    var port = server.address().port; 
}); 

du mit node <filename>.js laufen kannst dann gehen Sie einfach auf http://localhost:3000/index.html oder http://localhost:3000/myMusicFile.mp3 zum Beispiel.

hoffe das hilft!

Verwandte Themen