【问题标题】:Serving static files on a url with parameters in Express使用 Express 中的参数在 url 上提供静态文件
【发布时间】:2017-10-20 14:18:38
【问题描述】:

我正在使用带有 Express 的车把模板引擎。在没有参数的情况下访问端点时,我的所有静态文件都会被提供。包含参数时不是这种情况。

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()。

【问题讨论】:

    标签: node.js express handlebars.js url-parameters


    【解决方案1】:

    听起来您没有对模板中的静态资源使用绝对 URL(以 / 开头),因此它们是相对于 /projects/batteryapp 而不是根请求的。

    所以不要像这样:

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

    使用这个:

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

    【讨论】:

    • 那是我的问题。感谢您的帮助!
    • 这也解决了我同样的问题。但是当我使用 get('/polls/all' ...) 时不会出现这个问题。只有当我得到('/poll/:id'...)时才会出现。你能解释一下为什么吗?
    • @Sid24 并非没有更多信息
    猜你喜欢
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多