How to use AngularJS routes with Express (Node.js) when a new page is requested?

4,829 views
Skip to first unread message

matth...@gmail.com

unread,
Nov 4, 2012, 8:18:05 PM11/4/12
to ang...@googlegroups.com

I'm using Express, which loads AngularJS from a static directory. Normally, I will request http://localhost/, in which Express serves me my index.html and all of the correct Angular files, etc. In my Angular app, I have these routes setup, which replace the content in an ng-view:

$routeProvider.when('/', {
    templateUrl: '/partials/main.html',
    controller: MainCtrl,
});

$routeProvider.when('/project/:projectId', {
    templateUrl: '/partials/project.html',
    controller: ProjectCtrl,
});

$locationProvider.html5Mode(true);

On my main page, I have a link to <a href="/project/{{project.id}}">, which will successfully load the template and direct me to http://localhost/project/3 or whatever ID I have specified. The problem is when I try to direct my browser to http://localhost/project/3 or refresh the page, the request is going to the Express/Node server, which returns Cannot GET /project/3.

How do I setup my Express routes to accommodate for this? I'm guessing it will require the use of $location in Angular (although I'd prefer to avoid the ugly ?searches and #hashes they use), but I'm clueless about how to go about setting up the Express routes to handle this.

StackOverflow:  http://stackoverflow.com/questions/13222252/how-to-use-angularjs-routes-with-express-node-js-when-a-new-page-is-requested

johntom

unread,
Nov 4, 2012, 8:21:07 PM11/4/12
to ang...@googlegroups.com, matth...@gmail.com
Hi,

Brian T. Ford has a great example http://briantford.com/blog/angular-express.html.
HTH
John
Reply all
Reply to author
Forward
0 new messages