2016-05-03 56 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 –