首页 > 解决方案 > 带有可选参数的路由会阻止其他路由加载

问题描述

我的基于 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 错误。

未捕获的语法错误:意外的令牌:jquery.min.js:2

标签: javascriptnode.jsexpressmongooseejs

解决方案


似乎带有可选参数的索引路由位于路由列表的顶部,将首先匹配,以防止匹配以下特定路由。因此,您必须先放置特定路线,然后再添加带有可选参数的路线。


推荐阅读