2016-08-29 5 views
0

Я хочу направить мое приложение по угловым маршрутам в html5mode(true). Вот мой фрагмент кода.Как отдать приоритет угловой маршрутизации вместо маршрутизации узлов при использовании html5Mode (true) в угловом JS

index.html

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <title>MyApp</title> 
     <base href="/"> 
     <!-- Import Angular --> 
     <script type="text/javascript" src="bower_components/angular/angular.min.js"></script> 
     <!-- Import Angular Route --> 
     <script type="text/javascript" src="bower_components/angular-route/angular-route.min.js"></script> 
     <!-- Import Local JS Files --> 
     <script type="text/javascript" src="app/app.routes.js"></script> 
     <script type="text/javascript" src="app/userController.js"></script> 
     <script type="text/javascript" src="app/app.js"></script> 
    </head> 
    <body> 
     <ng-view ng-app="myApp"></ng-view> 
    </body> 
</html> 

app.js

var app = angular.module('myApp', ['appRoute']) 

app.routes.js

angular.module('appRoute', ['ngRoute', 'userController']) 

.config(function($routeProvider, $locationProvider) { 
    $locationProvider.html5Mode({ 
     enabled: true 
    }); 
    $routeProvider 
    .when('/user', { 
     templateUrl: 'app/user.html', 
     controller: 'UserController', 
     controllerAs: 'user' 
    }).otherwise({ 
     redirectTo: '/user' 
    }); 
}); 

userController.js

angular.module('userController', []) 
.controller('UserController', function() { 

}); 

Но когда я попал в URL т.е. http://0.0.0.0:3000 в моем браузере, он перенаправляет URL для http://0.0.0.0:3000/user который является правильным, но когда я пытаюсь перезарядить это говорит мне Cannot GET /user который я думаю, это ответ от Сервер узла. Как настроить приложение, чтобы браузер использовал http://0.0.0.0:3000 или http://0.0.0.0:3000/user.

Обновление: Код сервера NodeJS.

// grab all we need 
var path = require('path'); 
var express = require('express'); 
var app = express(); 

// setup public folder 
app.use(express.static(path.join(__dirname, 'public'))); 
app.set('views', __dirname + 'public'); 

// set up the server 
var server = app.listen(3000, 'localhost', function() { 
    console.log('Server connected at ' + this.address().address + ':' + this.address().port); 
}); 

// export exposed variable 
module.exports = app; 
+0

использовать LOCALHOST вместо – Aravind

+0

того же результата с локальной – Rusty

+0

Update ответом и включает в своем NodeJS код. Вы используете Express Framework? – gdyrrahitis

ответ

1

Вам необходимо добавить правило общего доступа для маршрутизации в код сервера.

Обновить код, добавив это правило, прежде чем наладка сервера:

app.all('/*', function (req, res, next) { 
    // Just send the index.html for other files to support HTML5Mode. Assuming your index.html is at application root 
    res.sendFile('index.html', { root: __dirname }); 
}); 

Это будет ловить все другие запросы (отличные от корня) и перенаправить их обратно index.html в целью поддержки Режим HTML5.

По сути, ваш серверный код должен выглядеть следующим образом:

// grab all we need 
var path = require('path'); 
var express = require('express'); 
var app = express(); 

// setup public folder 
app.use(express.static(path.join(__dirname, 'public'))); 
app.set('views', __dirname + 'public'); 

/* CATCH-ALL RULE HERE */ 
app.all('/*', function (req, res, next) { 
    // Just send the index.html for other files to support HTML5Mode 
    res.sendFile('index.html', { root: __dirname }); 
}); 

// set up the server 
var server = app.listen(3000, 'localhost', function() { 
    console.log('Server connected at ' + this.address().address + ':' + this.address().port); 
}); 

// export exposed variable 
module.exports = app; 
+0

Спасибо. Это сработало. :) – Rusty

 Смежные вопросы

  • Нет связанных вопросов^_^