2016-05-03 69 views
0

我有一個Node/Express應用程序。在這個應用程序,我有以下路線設置:節點 - 快遞 - 遞歸路線

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 }); 
}); 

我的文章/內容文件加載正常。但是,我的文章/演示會導致遞歸加載。我不懂爲什麼。我的/article/demo.html文件如下所示:

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

我有一個main.html文件存在。但是,它沒有得到渲染。當我查看控制檯窗口時,我注意到只要打開瀏覽器窗口,就會重複打印 load the demo view 。我實際上可以看到文章/演示文件在它自己內部加載。但是,我從來沒有看到main.html的內容。我不知道如何解決這個問題。任何幫助,將不勝感激。

+0

您的demo.html頁面是否正確渲染? – Sumeet

+0

你使用螞蟻模板引擎像玉或ejs? @ user687554 – Sumeet

+0

@Sumseet - 是的。 Demo.html呈現正確。它包含一個iframe。這是在iframe中引用的url無法正確呈現的網址。 – user687554

回答

0

查看正在呈現您的文件,但無法訪問main.html,因爲它在靜態文件夾中不可用。相對路徑加載不起作用,你需要有如下所示的靜態文件夾。把你的文件放在裏面。

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

0

當瀏覽器詢問服務器./demo/main.html時,您的/article/:title/demo正在匹配。這可能不是main.html的正確路徑。這在很大程度上取決於你如何設置你的靜態資產加載。

+0

我明白這一點。但是,如何設置路由以便可以加載該路由中的靜態文件? – user687554

+1

不要使用相對路徑(從'。/ demo/main.html'中刪除點)。使用絕對路徑例如/demo/main.html並配置express以從您的靜態文件所在的文件夾加載文件http://expressjs.com/en/starter/static-files.html –