好的,这个问题源于这篇文章,这也是我的问题,但有点转移到这个问题上了。
现在的问题是,我的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('');
就在那里。它现在就像一个符咒。
我希望这能帮助到任何站在我这边的人。