0

好的,所以这个问题源于这篇文章,这也是我的问题,但有点转移到这个问题上。

现在的问题是,我的 Angular 应用程序可以工作,但是当涉及到 Node 路由时,例如/login,浏览器认为它是 Angular 路由。当我刷新整个页面时,浏览器确实将其检测为节点路由,但当我在 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');
        }
});

默认.js:

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

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

您的帮助将不胜感激。

谢谢

4

1 回答 1

1

我放弃了在根 URL 上进行这项工作,所以我将/index添加到baseURL中,如下所示:

index.html文件:

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

我在routes.js文件中添加了一个 catch all ,如下所示:

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

使用角度文件当然有这个:

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

在那里。它现在就像一个魅力。

我希望这对我的鞋子有帮助。

于 2020-04-30T19:06:24.327 回答