Express + Angular路由错误

时间:2017-04-27 01:40:25

标签: angularjs express mean

我正在使用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,它似乎工作正常。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

所以我弄清楚我的问题是什么。

在我的服务器文件中的根路径GET语句之后,我需要添加以下代码:

app.get('*', function(req,res){
    res.sendFile(path.join(__dirname, 'public/', 'index.html'));
});

发生了什么,是Express试图找到我定义的/login路线。问题是,该路由需要由Angular处理,而不是Express,因此'*'对于Express不知道如何明确处理的任何路由都是一个全能,然后将其移交给对index.html文件负责。