我正在使用Angular 1和Express学习身份验证。我的后端设置用于测试目的,我现在正在前端工作。我已经设置了基本路线。
这是我前端的核心:
function router($stateProvider, $urlRouterProvider, $locationProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('home', {
url: '/',
templateUrl: 'views/home/',
controller: 'mainController'
})
.state('login', {
url: '/login',
templateUrl: 'views/login/',
controller: 'loginController'
});
$locationProvider.html5Mode(true);
}
以下是后端相关的路线:
app.use(express.static(path.join(__dirname, 'public')));
app.get('/', function(req,res){
res.sendFile(path.join(__dirname, 'public/', 'index.html'));
});
我唯一的其他路由是我的API,它使用常量apiRouter
并将/api/
注入这些路由。
现在,当我尝试直接从浏览器访问路由时,会出现问题。我是nagivate to localhost:8080 / login我收到错误Cannot GET /login
,但在我的索引页面上使用了一个ui-sref,它似乎工作正常。
有什么想法吗?
答案 0 :(得分:0)
所以我弄清楚我的问题是什么。
在我的服务器文件中的根路径GET语句之后,我需要添加以下代码:
app.get('*', function(req,res){
res.sendFile(path.join(__dirname, 'public/', 'index.html'));
});
发生了什么,是Express试图找到我定义的/login
路线。问题是,该路由需要由Angular处理,而不是Express,因此'*'
对于Express不知道如何明确处理的任何路由都是一个全能,然后将其移交给对index.html文件负责。