2016-05-03 8 views
0

Ich habe eine Node/Express App. In dieser App habe ich die folgenden Routen-Setup:Knoten - Express - Rekursive Route

app.use('/article/:title/demo', function(req, res) { 
    console.log('load the demo view'); 
    res.render('article/demo', { title: req.params.title }); 
});  

app.use('/article/:title', function(req, res) { 
    console.log('view the article'); 
    res.render('article/content', { title: req.params.title }); 
}); 

Mein Artikel/Inhalt Datei lädt fein. Mein Artikel/Demo verursacht jedoch eine rekursive Last. Ich verstehe nicht warum. Meine /article/demo.html Datei sieht so aus:

<html> 
<body> 
    <article> 
<iframe style="width:100%; height:800px; overflow-y:scroll;" src="./demo/main.html"></iframe> 
    </article>  
</body> 
</html> 

Ich habe eine main.html Datei, die existiert. Es wird jedoch nicht gerendert. Wenn ich in das Konsolenfenster schaue, merke ich, dass load the demo view beginnt, wiederholt gedruckt zu werden, solange ich das Browserfenster offen lasse. Ich kann tatsächlich sehen, dass der Artikel/die Demo-Datei in sich geladen wird. Ich sehe jedoch nie den Inhalt von main.html. Ich bin mir nicht sicher, wie ich das beheben soll. Jede Hilfe wäre willkommen.

+0

Ist die Darstellung der demo.html Seite korrekt? – Sumeet

+0

Verwenden Sie Ant-Template-Engine wie Jade oder EJS? @ user687554 – Sumeet

+0

@Summeet - Ja. Demo.html wird korrekt gerendert. Es enthält einen iframe. Es ist die URL, auf die im Iframe verwiesen wird, die nicht korrekt gerendert wird. – user687554

Antwort

0

View rendert Ihre Datei korrekt, aber nicht auf main.html, da sie nicht im statischen Ordner verfügbar ist. Das Laden des relativen Pfades funktioniert nicht, du musst einen statischen Ordner wie unten haben. Platziere deine Datei darin.

app.set('view engine', 'ejs'); app.use(express.static(path.join(__dirname, 'public')));// Load static files

0

Ihre /article/:title/demo wird zugeordnet, wenn der Browser den Server nach ./demo/main.html fragt. Das ist wahrscheinlich nicht der richtige Weg für main.html. Dies hängt stark davon ab, wie Sie das statische Laden von Assets eingerichtet haben.

+0

Ich verstehe das. Wie stelle ich jedoch eine Route ein, damit statische Dateien auf dieser Route geladen werden können? – user687554

+1

Verwenden Sie keine relativen Pfade (entfernen Sie den Punkt aus './Demo/main.html'). Verwenden Sie absolute Pfade, z. /demo/main.html und konfiguriere express, um Dateien aus dem Ordner zu laden, in dem sich deine statische Datei befindet http://expressjs.com/de/starter/static-files.html –

Verwandte Themen