Не удается перезагрузить маршруты второго уровня в Express (запущенное приложение Angular)

#javascript #angularjs #node.js #express #angular-ui-router

#javascript #angularjs #node.js #экспресс #angular-ui-router

Вопрос:

Я могу перезагрузить маршруты первого уровня с этими настройками, но не маршруты второго уровня. Например, «Игровой» маршрут, определенный ниже, не может быть перезагружен, но маршрут входа в систему может.

Я добавил <base href="/"> в index.html .

Angular router.js (используя angular-ui-router):

 $stateProvider
    .state('root', {
        url: '/',
        templateUrl: templateUrlRoot   'root.html',
        controller: 'gameListController',
        title: 'ManRPG'
    })
    .state('game', {
        url: '/game/:gameId',
        templateUrl: templateUrlRoot   'game.html',
        controller: 'gameController',
        title: 'Game'
    })
    .state('login', {
        url: '/login',
        templateUrl: templateUrlRoot   'login.html',
        controller: 'loginCtrl',
        title: 'Login'
    })
  

Экспресс:

 var express = require('express');
var app = express();
var router = express.Router();
var bodyParser = require('body-parser');

// ... other routes, etcetera

app.use('/api', router);

// Send the angular app, make sure that index.html is served first
app.use('/', express.static(__dirname   '/app' ));
app.get('/*', function (req, res) {
    res.sendFile(__dirname '/app/index.html'); 
})
  

Любая помощь / совет приветствуется.

Ответ №1:

Такое поведение произошло из-за того, что некоторые из моих файлов были включены без начального «/». Итак, что я сделал, это изменил:

 <script src="js/lib/angular/angular.js"></script>
<script src="js/lib/angular-ui-router/release/angular-ui-router.js"></script>
  

Для:

 <script src="/js/lib/angular/angular.js"></script>
<script src="/js/lib/angular-ui-router/release/angular-ui-router.js"></script>
  

И это решило мою проблему.