Express - 使用多个路由器文件为 Angular 1.x html5Mode 启用全局捕获功能时无法使用。

问题描述 投票:0回答:1

好吧,这个问题源于 这个 的帖子,这也是我的问题,但也算是搬到了这个问题上。

现在的问题是,我的angular应用可以工作,但是当涉及到Node路由时,比如说 登录浏览器认为它是一个Angular路由。当我刷新整个页面时,浏览器确实检测到它是一个Node路由,但当我在浏览网站时,一旦Angular路由启动,浏览器就不会检测到。

长话短说,下面是我的路由文件。

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

routes. 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');
        }
});

default. js:

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

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

非常感谢您的帮助

谢谢您的帮助。

angularjs express-router html5mode
1个回答
1
投票

我放弃了让它在根网址上工作,所以我添加了以下内容 指数baseURL 像这样。

index.html 文件。

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

我在这个文件里加了一个 "抓 "字 文件,如下所示 文件,如下图。

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('');

在那里. 现在工作得很好。

我希望这能帮到和我一样的人。

© www.soinside.com 2019 - 2024. All rights reserved.