当用户转到mydomain.com/game时,我希望用户查看我的公用文件夹中显示的内容。当我这样做时,这完全可以正常工作:
app.use('/game', express.static('public'))
问题是我想从URL中提取一些信息,但是由于我不知道在使用静态站点时如何继续路由,因此无法提取任何信息。例如,如果用户输入mydomain.com/game/123,我想检索123,但仍然像mydomain.com/game一样将该人路由到我的公用文件夹。
关于如何处理此问题的任何想法?
答案 0 :(得分:1)
这在类似情况下对我也有用
app.use('/game/:id', (req, res) => {
// do something with id
res.redirect(302, '/game');
}
答案 1 :(得分:0)
尝试使用两种中间件:第一个是您的静态中间件,第二个是后备,id为(123)
app.use('/game', express.static('public'));
app.use('/game/:id', function(req, res) { // when static not found, it passed to this middleware, this process it
console.log('your id', req.params.id);
res.send('ok');
});
答案 2 :(得分:0)
如果您使用的是React静态文件,并且想使用express服务所有的React路由,那么您必须执行以下操作-
1。首先,必须在react文件夹中运行命令
npm run build
这将在react应用中创建您的构建文件夹,其中包含一个index.html文件,您必须通过express服务。 现在进入您的server.js文件并在其中写入
const express = require('express');
var path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, 'client/build')));
app.get('*', (req,res) => {
res.sendFile(path.join(__dirname+'/client/build/index.html'));
});
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server up and running on port ${port} !`));