Коллеги доброго времени суток, пишу приложение на nodejs и встал вопрос организовать универсальный роутер, что бы не писать маршруты под каждый url. но появилась проблема и не могу понять почему:
вот точка входа, главный файл:
const path = require('path');
const http = require('http');
const express = require('express');
const minify = require('express-minify-html');
const favicon = require('express-favicon');
const staticAsset = require('static-asset');
const compression = require('compression');
const config = require('./config.json');
const router = require('./controllers/router');
const app = express();
app.use(compression());
app.use(minify({
override: true,
exception_url: false,
htmlMinifier: {
removeComments: true,
collapseWhitespace: true,
collapseBooleanAttributes: true,
removeAttributeQuotes: true,
removeEmptyAttributes: true,
minifyJS: true,
minifyCSS: true
}
}));
app.use(favicon(path.join(__dirname, 'public/images/favicon.png')));
app.set('views', path.join(__dirname, 'templates'));
app.set('view engine', 'ejs');
app.use(staticAsset(__dirname + '/public'));
app.use(express.static(__dirname + '/public'));
app.use(router);
app.use((req, res, next) => {
next(404);
});
app.use((err, req, res, next) => {
res.status(err.status || 404);
console.log(err + ' : ' + req.url);
res.render('index.ejs', {
template: './pages/404',
description: '404 не найдено',
keywords: '404 не найдено'
});
});
const server = http.createServer(app);
server.listen(config.port, () => {
console.log('server is ready');
});
Думаю всем понятно, что там происходит. Так же есть роутер:
// router
'use strict';
const express = require('express');
const router = express.Router();
const map = require('./map');
router.get(/\/([a-z\-]*)/gi, map.get);
module.exports = router;
Так вот, идея в том что нужно парсить url, вид у url может быть следующий:
/
/news
/news/
/news/sport
/news/sport/
/news/sport/12234
/news/sport/12234/
Тут то же думаю ясно. Но вот появилась проблема, нужная страница открывается через раз, т.е. либо выдается 404 либо нужная страница, прошу помощи, подскажите, может где-то есть ошибка?
Заранее благодарю.