Express-为Angular 1.x html5Mode启用具有多个路由器文件的catch-all不起作用



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

现在的问题是,我的angular应用程序可以工作,但当涉及到节点路由时,比如/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');
}
});

default.js:

module.exports = function(express, app, passport, Promise){
var defaultRouter = express.Router();
defaultRouter.get('/*', function(req, res, next) {
res.render('./views/index.html');
});
};

我们将非常感谢你的帮助。

感谢

我放弃了在根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('');

就在那里。它现在就像一个符咒。

我希望这能帮助到任何站在我这边的人。

最新更新