Angular 1 - routeProvider не работает в html5Mode - PullRequest
0 голосов
/ 25 апреля 2020

После включения html5Mode мой $ routeProvider больше не работает. Я вижу ту же проблему в этом сообщении, но у меня ничего не работает. Я даже не знаю, с чего начать, так как кажется, что это работает на всех других примерах, с которыми я сталкивался.

Я использую Express для маршрутизации в / index, который работает просто отлично но отображается только верхний navbar . ng-view не загружается без ошибок.

Моя структура URL:

  • До: localhost: 3000 / index # / // Это сработало ранее, до того как я включил html5Mode
  • После: localhost: 3000 / index / // Это не работает, если html5Mode включен

Мой индекс. html файл:

<!DOCTYPE html>
  <html lang="en" ng-app="mainApp">
  <head>
    <base href="/index">
  </head>

  <body class="bg-light">
    <div navbar></div>

    <div ng-view></div>

    <script src="/jsLib/angular.min.js"></script>
    <script src="/jsLib/angular-route.min.js"></script>
    <script src="/angular/angularApp.js"></script>
    <script src="/jsLib/angular-sanitize.min.js"></script>
    <script src="/jsLib/angular-animate.min.js"></script>
  </body>

  </html>

My angularApp. js file:

var mainApp = angular.module('mainApp', ['ngRoute', 'ngAnimate']);

mainApp.config(function($routeProvider, $locationProvider) {
    $locationProvider.html5Mode(true).hashPrefix('');

    $routeProvider
    .when('/', {templateUrl : '/partial/wall/feed.html', controller  : 'wallMainController'})

  });

mainApp.directive('navbar', function(){
    return{
        templateUrl: 'partial/template/navbar.html'
    };
});

mainApp.controller('wallMainController', ['$scope', function($scope){

  consolel.log('wallMainController loaded');

}]);

My Express app:

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

app.set('views', path.join(__dirname, 'views'));
app.engine('html', require('hogan-express'));
app.set('view engine', 'html');
app.locals.delimiters = '<% %>';
app.use(express.static(path.join(__dirname, 'public')));
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

router.get('/', function(req, res){
    res.redirect('/index');
});

router.get('/index', function(req, res, next){
    res.render('index');
});

app.listen(3000, function(){
    console.log('App is working on Port 3000');
});

В результате я вижу только панель навигации на сайте но больше ничего в разделе ng-view. Мне понадобятся некоторые указания от куда go отсюда. Ни одно из предложений, из того, что я нашел, не работает. Я не добавил

1 Ответ

0 голосов
/ 26 апреля 2020

Я исправил это, добавив ниже под путь / index

router.get('/*', function(req, res, next) {
  res.sendfile('./views/index.html')
});

Это вызывает другую проблему, где все мои другие маршруты (не в вопросе), также попадают по этому пути, как: / login но я рассмотрю это отдельно. Эта проблема решена

...