【问题标题】:Routes with optional parameters prevent other routes from loading带有可选参数的路由会阻止其他路由加载
【发布时间】:2020-12-20 01:43:44
【问题描述】:

我的基于 express 的 nodejs 应用中有 3 条路由。

app.get('/', function (req, res) {
 //
})

app.get('/findOne', function (req, res) {
 //
})

app.get('/getFour', function (req, res) {
 //
})

我在索引路径中有一个查询参数“product”,可用作 /?product=XXXX。一切都按预期正常工作。

现在我将产品作为可选变量添加到索引路径

app.get('/:product?', function (req, res) {
 //
})

索引路由正常,但其他路由抛出奇怪的 jquery 错误。

Uncaught SyntaxError: Unexpected token : jquery.min.js:2

【问题讨论】:

  • 你有没有把带有可选参数的索引路由作为列表的第一个路由??
  • 看起来像app.get(["/", "/:product?"], func......
  • 我的意思是,它是否出现在 /findOne/getFour 路由之前??
  • 是的,这是路线中的第一个。
  • 好的。我认为因为它有一个可选参数,所以首先会匹配它以防止以下工作。您可以尝试将其放在所有特定路线之后。

标签: javascript node.js express mongoose ejs


【解决方案1】:

似乎带有可选参数的索引路由位于路由列表的顶部,将首先匹配,以防止匹配以下特定路由。所以在添加带有可选参数的路由之前,您必须先放置特定的路由。

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 2017-03-22
    • 1970-01-01
    • 2013-05-07
    • 2016-10-12
    • 2011-01-09
    • 2013-09-10
    • 1970-01-01
    相关资源
    最近更新 更多