Как я могу обработать маршрутизацию с помощью Express, когда я использую статический сайт? - PullRequest
0 голосов
/ 30 июня 2019

Когда пользователь заходит на mydomain.com/game, я хочу, чтобы пользователь видел, что отображается в моей общей папке.Это работает совершенно нормально, когда я делаю это:

app.use('/game', express.static('public'))

Проблема в том, что я хочу извлечь некоторую информацию из URL, но так как я не знаю, как продолжить маршрутизацию при использовании статического сайта, яне может извлечь любую информацию.Например, если пользователь вводит mydomain.com/game/123, я хочу получить 123, но все равно направить пользователя в мою общую папку, как это делает mydomain.com/game.

Любые идеи о том, каксправиться с этой проблемой?

Ответы [ 3 ]

1 голос
/ 30 июня 2019

Это сработало для меня в аналогичной ситуации

app.use('/game/:id', (req, res) => {
  // do something with id
  res.redirect(302, '/game');
}
0 голосов
/ 01 июля 2019

Если вы используете реагирующие статические файлы и хотите обслуживать все реагирующие маршруты, используя экспресс, тогда вы должны сделать что-то вроде ниже-

1. Прежде всего вам нужно запустить команду в вашей папке реагирования

npm run build

это создаст вашу папку сборки в приложении реагирования, имеющую один файл index.html, который вы должны обслуживать через экспресс.Теперь зайдите в ваш файл 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} !`));
0 голосов
/ 30 июня 2019

Попробуйте использовать два промежуточного ПО: первое - это ваше статическое промежуточное ПО, второе - запасной, с 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');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...