2017-12-26 4 views
1

Ich versuche Express AngularJS ngRoute an der Seite zu verwenden, aber ich erhalte die folgende Fehlermeldung erhalten:Routing mit AngularJS und Express

cannot Get /profile

Hier ist mein Code:

.config(['$locationProvider', '$routeProvider', function ($locationProvider, $routeProvider) { 
     $routeProvider.when('/profile', { 
     templateUrl: 'views/partials/profile.html', 
     controller: 'kontrola' 
     }) 

     $locationProvider.html5Mode('true') 
     $locationProvider.hashPrefix('!') 



    app.get('/', routes.index) 
    app.get('/login', routes.login) 
    app.get('/signup', routes.signup) 

Wie kann ich es beheben?

Antwort

0

Angulars ngRoute ist für clientseitige Routing, während Express für serverseitige Routing ist.

Sie einen Handler in Ihrem Server festlegen müssen statische Dateien dienen, wie diese (Ihre views Ordner unter der Annahme, im static Ordner ist:

app.set('views', path.join(__dirname, 'static')); 

Dann, wenn Sie zu http://yourservername/#/profile gehen, werden Sie Ihr Profil erhalten . Ansicht

wenn Sie html5mode verwenden möchten, müssen Sie ein Tag wie diese haben:

<head> 
    ..... 
    <base href="/"> 

</head> 
+0

dank Shimon für die Antwort, aber ich versuchte, die Teil-Datei in den Ordner Sichten, stellen Sie den \t Handler auf dem Server wie zu bewegen app.set ('Ansichten', Pfad.join (__ Verzeichnisname, 'statisch')); und navigierte zu localhost/3000/#/profile, aber es blieb auf der aktuellen Indexseite und änderte die URL zu http: // localhost: 3000/#! #% 2Fprofile statt und wie du sehen kannst versuche ich die # zu vermeiden! In der URL benutze ich deshalb den $ locationProvider aber immer noch – yaxx

+0

So bekommst du das 'can not Get/profile' nicht mehr, oder? –

+0

Also jetzt ist es nur ein eckiges Problem, welche Version von eckigen verwendest du? –

0

.config ([ '$ locationProvider', '$ routeProvider', '$ liefern', function ($ locationProvider, $ routeProvider) {

$routeProvider.when('/profile', { 
    templateUrl: 'partials/pro.html', 
    controller: 'kontrola' 
    }) 

$ locationProvider.html5Mode (true) $ locationProvider.hashPrefix (‘ ')

}]) 

statt:

.config (['! $ locationProvider‘, '$ routeProvider', '$ liefern', function ($ locationProvider, $ routeProvider) {

$ locationProvider.html5Mode (true) $ locationProvider.hashPrefix ('!')

$routeProvider.when('/profile', { 
    templateUrl: 'partials/pro.html', 
    controller: 'kontrola' 
    })