angularjs - How to give priority to angular routing instead of node routing while using html5Mode(true) in angular JS -


i want route application according angular routes in html5mode(true). here angular code snippet.

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() {  }); 

but when hit url i.e. http://0.0.0.0:3000 in browser, redirects url http://0.0.0.0:3000/user correct when try reload tells me cannot /user guess response node server. how can configure application browser uses http://0.0.0.0:3000 or http://0.0.0.0:3000/user.

update: nodejs server code.

// grab 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 server var server = app.listen(3000, 'localhost', function() {     console.log('server connected @ ' + this.address().address + ':' + this.address().port); });  // export exposed variable module.exports = app; 

you need add catch-all rule routing in server code.

update code adding rule before setting-up server:

app.all('/*', function (req, res, next) {     // send index.html other files support html5mode. assuming index.html @ application root     res.sendfile('index.html', { root: __dirname }); }); 

this catch other requests (different root) , redirect them index.html in order support html5 mode.

essentially, server code should this:

// grab 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) {     // send index.html other files support html5mode     res.sendfile('index.html', { root: __dirname }); });  // set server var server = app.listen(3000, 'localhost', function() {     console.log('server connected @ ' + this.address().address + ':' + this.address().port); });  // export exposed variable module.exports = app; 

Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -