gpt4 book ai didi

javascript - Express js,如何匹配所有路由,甚至子路由

转载 作者:搜寻专家 更新时间:2023-11-01 00:05:29 28 4
gpt4 key购买 nike

我正在构建一个 Node js 应用程序,它需要为除 /video 路由之外的所有路由返回 404 页面。

app.get('/video/*', Video.show)
app.get('*', (req,res) => res.render('not_found'))

如果 URL 没有子目录,这会起作用。当有人输入带有子目录的 URL,例如 /hello/subhello/ 时,就会出现问题。这没有被我的路线捕获。

我已经尝试过这些选项但没有成功:

app.get('/*', (req,res) => res.render('not_found'))
app.use((req,res) => res.render('not_found'))

我错过了什么吗?

谢谢

编辑

当我删除设置 Handlebars 的代码时,路线会按预期进行。

这是 Handlebars 设置代码:

app.engine('.hbs', exphbs({
extname:'.hbs',
defaultLayout:'layout.hbs',
layoutsDir: __dirname+ '/views'
}))
app.set('view engine', '.hbs')
app.set('views', __dirname + '/views')

最佳答案

这里有一个工作演示:

var express = require('express');
var app = express();
var exphbs = require('express-handlebars');

app.engine('.hbs', exphbs({
extname:'.hbs',
defaultLayout:'layout.hbs',
layoutsDir: __dirname+ '/views'
}))

app.set('view engine', '.hbs')
app.set('views', __dirname + '/views')

app.get(['/videos', '/videos/*'], function (req, res) {
res.send('Hello World!');
});

app.use(function(req, res) {
res.status(404).send('Not found')
})

app.listen(1233, function () {
console.log('Example app listening on port 1233!');
});

无论您访问 localhost:1233/videos 还是 localhost:1233/videos/*,您都会收到 Hello World 响应。如果你去别的地方,你会得到 not found。

编辑:添加了 Handlebars 代码,与您一样。仍然按预期工作。

关于javascript - Express js,如何匹配所有路由,甚至子路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43745194/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com