2017-05-20 34 views
1

我正在使用Express的handlebars模板引擎。在没有参数的情况下击中端点时,所有静态文件都将被提供。当包含参数时情况并非如此。使用Express中的参数服务URL上的静态文件

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

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

这是我尝试使用的端点。

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

我看过一个例子,如果你使用res.sendFile(),它显然会起作用。但是,使用模板引擎时必须使用res.render()。

回答

3

听起来你并没有使用模板中的静态资源的绝对URL(从/开始),所以它们被请求的相对于/projects/batteryapp而不是根。

因此,而不是像这样:

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

使用此:

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

这是我的问题。谢谢你的帮助! –

+0

这也解决了我同样的问题。但是当我使用get('/ polls/all'...)时,这个问题不会出现。它只有当我得到('/ poll /:id'...)时才会出现。你能解释为什么吗? – Sid24

+0

@ Sid24不是没有更多的信息 – robertklep