Express - не работает опция catch all для Angular 1.x html5Mode с несколькими файлами маршрутизатора - PullRequest
0 голосов
/ 26 апреля 2020

Хорошо, поэтому этот вопрос возник из этой публикации, которая также является моим вопросом, но Сорта перешел к этой проблеме.

Теперь проблема в том, что мое приложение angular работает, но когда оно приходит на маршруты Node, например / login , браузер считает, что это маршрут Angular. Браузер определяет его как маршрут узла, когда я переоцениваю sh всю страницу, но не когда я перехожу на сайт после запуска Angular маршрутизации.

Короче говоря, вот мои файлы маршрута :

require('./routes/routes.js')(express, app);
require('./routes/default.js')(express, app);

маршруты. js файл:

module.exports = function(express, app){
    var router = express.Router();

    router.get('/', function(req, res){
        res.render('index');
    });

    router.get('/login', function(req, res){
        if (req.isAuthenticated()){
            res.render('index');
        } else {
            res.render('login');
        }
});

по умолчанию. js:

module.exports = function(express, app, passport, Promise){
    var defaultRouter = express.Router();

    defaultRouter.get('/*', function(req, res, next) {
        res.render('./views/index.html');
    });
};

Ваша помощь будет высоко оценена.

Спасибо

1 Ответ

1 голос
/ 30 апреля 2020

Я прекратил работу над URL-адресом root, поэтому добавил / index к baseURL следующим образом:

index. html file:

<head>
  <base href="/index/">
</head>

Я добавил перехват всех файлов в . js, как показано ниже:

module.exports = function(express, app){
    var router = express.Router();

    router.get('*', function(req, res, next) {
        if(req.url == '/' || req.url == '/login'){
            next();
        } else {
            res.sendfile('./views/index.html');
        }
    });


    router.get('/', function(req, res){
        res.render('index');
    });

    router.get('/login', function(req, res){
        if (req.isAuthenticated()){
            res.render('index');
        } else {
            res.render('login');
        }
});

С файлом angular, конечно, с таким:

$locationProvider.html5Mode({
    enabled: true,
    requireBase: true
}).hashPrefix('');

И там. Теперь это работает как шарм.

Надеюсь, это поможет всем, кто на моем месте.

...