2017-05-20 2 views
1

Ich benutze die Lenker-Vorlagen-Engine mit Express. Beim Treffen von Endpunkten ohne Parameter werden alle meine statischen Dateien angezeigt. Dies ist nicht der Fall, wenn ein Parameter enthalten ist.Serving statische Dateien auf einer URL mit Parametern in Express

app.engine('.hbs', hbs(handlebarsOptions)); 
app.set('view engine', '.hbs'); 

app.use(express.static('public')); 

Hier ist der Endpunkt, den ich versuche zu verwenden.

app.get('/projects/:name', function(req, res) { 
    if(req.params.name === 'batteryapp') { 
    res.render('project', {name: 'BatteryApp'}); 
    } 
}); 

Ich habe ein Beispiel gesehen, die anscheinend funktioniert, wenn Sie res.sendFile() verwenden. Res.render() muss jedoch verwendet werden, wenn eine Vorlagen-Engine verwendet wird.

Antwort

3

Es klingt wie Sie nicht absolute URLs (beginnend mit einem /) für die statischen Ressourcen in Ihrer Vorlage verwenden, so dass sie relativ zu /projects/batteryapp anstelle des Stamms angefordert werden.

Anstatt also etwa so:

<script src="js/app.js"></script> 

verwenden:

<script src="/js/app.js"></script> 
+0

Das ist mein Problem. Danke für Ihre Hilfe! –

+0

Dies hat auch mein Problem behoben. Aber dieses Problem tritt nicht auf, wenn ich get ('/ polls/all' ...) benutze. Es entsteht nur, wenn ich bekomme ('/ poll /: id' ...). Kannst du bitte erklären warum? – Sid24

+0

@ Sid24 nicht ohne weitere Informationen – robertklep

Verwandte Themen