在Express中使用带参数的URL提供静态文件服务

4
我正在使用Express框架的handlebars模板引擎。当请求没有参数的端点时,所有静态文件都会被提供。但是当包含参数时情况并非如此。
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()。

1个回答

10

听起来你在模板中没有使用绝对URL(以/开头)来引用静态资源,所以它们被视为相对于/projects/batteryapp而不是根目录请求。

因此,应该像这样:

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

使用此代码:

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

那就是我的问题。感谢你的帮助! - Reagan Cuthbertson
这也解决了我的同样问题。但是当我使用get('/poll/:id'...)时,这个问题不会出现,只有在我使用get('/polls/all'...)时才会出现。你能解释一下为什么吗? - Sid24
@Sid24 没有更多的信息,无法进行操作。 - robertklep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接