Браузер вызвал перезагрузку внутри SPA с угловой маршрутизацией

У меня есть угловой SPA, обслуживаемый узлом, но всякий раз, когда я обновляю/перезагружаю некорневую страницу, экспресс-сервер перехватывает маршрут и возвращает «не может ПОЛУЧИТЬ route_X». Какая функциональность отсутствует в моих маршрутах, чтобы включить это поведение обновления?

angular.module('appRoutes', []).config(['$routeProvider', '$locationProvider',
  function($routeProvider, $locationProvider) {

    $routeProvider

    .when('/', {
        templateUrl: 'views/nests.html',
        controller: 'NestController'

    .when('/pair/:id', {
        templateUrl: 'views/pairing.html',
        controller: 'PairController'
    })

    .when('/pairs', {
        templateUrl: 'views/pairs.html',
        controller: 'PairListController'
    });

    $locationProvider.html5Mode(true);

  }
]);

Единственный маршрут, который я определил на своем экспресс-сервере, выглядит следующим образом...

app.get('/', function(req, res) {
  var html = fs.readFileSync('public/views/index.html', 'utf8');
  res.send(html);
});

со всеми другими функциями маршрутизации, живущими в файле индекса.


person gards    schedule 12.10.2014    source источник
comment
как выглядят ваши ссылки?   -  person dandavis    schedule 13.10.2014


Ответы (1)


Вы должны направить все запросы (кроме статических) на index.html:

app.use("/js", express.static(__dirname + "/public/js"));
...

app.all('/*', function(req, res) {
  var html = fs.readFileSync('public/views/index.html', 'utf8');
  res.send(html);
});
person Reto Aebersold    schedule 13.10.2014
comment
Как магия. Вы нашли это в документах или просто знали об этом из прошлого опыта? - person gards; 14.10.2014
comment
В прошлом я делал несколько проектов на AngularJS, так что в основном из опыта. Кстати, хорошим ресурсом для этого типа стека является mean.io. - person Reto Aebersold; 14.10.2014