【问题标题】:Express + Angular routing bugExpress + Angular 路由错误
【发布时间】:2017-04-27 10:16:33
【问题描述】:

我正在学习使用 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/ 注入这些路由。

现在,当我尝试直接从浏览器访问路由时,问题就来了。我已经导航到 localhost:8080/login 我收到错误 Cannot GET /login,但是在我的索引页面上使用 ui-sref,它似乎工作得很好。

有什么想法吗?

【问题讨论】:

    标签: angularjs express mean


    【解决方案1】:

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

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

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

    发生了什么,Express 试图找到我定义的/login 路由。问题是,该路由需要由 Angular 处理,而不是 Express,因此 '*' 是 Express 不知道如何显式处理的任何路由的包罗万象,然后将责任移交给索引.html 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多