在使用两个参数路由路由时遇到一个奇怪的问题,我似乎无法对其进行调试并找到错误发生的位置。虽然我之前也使用过以下代码但由于某种原因它现在无法正常工作。
我有两个角度应用,一个在url '/'
上运行,另一个在url '/dashboard'
现在,我的应用A在网址' /'没有这样的问题,但是当我登录并使用此配置移动到应用程序B时 -
angular.module('student').config(function($routeProvider,$locationProvider){
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
$routeProvider
.when('/dashboard', { templateUrl: '/partials/dashboard/student/index',
controller: 'StudentDashBoardController'
})
.when('/profile', { templateUrl: '/partials/dashboard/student/profile',
controller: 'ProfileController'
})
.when('/myfeeds', { templateUrl: '/partials/dashboard/student/myfeeds',
controller: 'MyFeedsController'
})
.when('/student/test', { templateUrl: '/partials/dashboard/student/user',
controller: 'UserController'
});
});
并且express中的路由配置是 -
app.get('/dashboard',function(req,res){
if(!req.isAuthenticated()) {
res.redirect('/403');
} else if(req.user.roles.indexOf("student") != -1){
res.render('student');
} else if(req.user.roles.indexOf("teacher") != -1){
res.render('teacher');
} else if(req.user.roles.indexOf("publisher") != -1){
res.render('publisher');
}
});
app.get('/profile',auth.requiresApiLogin,users.renderStudentUser);
app.get('/student/test',auth.requiresApiLogin,users.renderStudentUser);
app.get('/myfeeds',auth.requiresApiLogin,users.renderStudentUser);
app.get('/partials/*',function(req,res){
res.render('../../public/app/' + req.params['0']);
});
app.get('*',function(req,res){
res.render('index',{
bootstrappedUser: req.user
});
});
现在,函数users.renderStudentUser
就像 -
exports.renderStudentUser = function(req,res){
User.findOne({username:req.user.username}).exec(function(err,user){
if(err){
res.status(400);
return res.send({reason:err.toString()});
}
res.render('student',{
user:user
});
});
};
所以,基本上它将用户路由到应用B.
我正在使用它,因为如果用户直接在浏览器中点击'/profile'
,那么app.get('*')
路由会将其重定向到应用A,在' /'所以我已经为'/profile','/myfeeds','/student/test'
明确设置了三条路由,将它们重定向到app B,其中angularjs路由器将处理每条路由。
现在,当我试图击中问题时
'/student/test'
直接在浏览器中,我收到所有脚本的404错误消息,甚至是部分文件,但呈现的视图仅为student
,因为在该视图中定义的脚本显示为404在控制台中的状态。
令人惊讶的是,当我试图点击' / dashboard'它工作,然后如果我去' / student / test'通过像
<a href="/student/test"> xyz </a>
它可以正常加载部分文件。
现在,为了调试,我将expressjs和angularjs路线从'/student/test'
更改为&#39; / student&#39;它可以通过直接在浏览器中使用此URL或使用超链接来实现两种方式。
我还试图重命名&#39; / student / test&#39;到'/xyz/test'
以验证我的expressjs路线中没有多条匹配此路线。
现在有人可以建议我犯了错误,或者我应该提供哪些更多信息来诊断这个错误,或者我应该如何调试它以找到错误。