I know that there are answers to this question, but they do not fully work for me. I use Angular 1.4 and Express 4. Express handles API calls, and Angular should handle all the HTML.
My express app.js:
var express = require('express'); var path = require('path'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); require('./routes/api')(app); var app = express(); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, '../client')));
Here is Angular app.js
angular .module('punyioApp', [ 'ngAnimate', 'ngAria', 'ngCookies', 'ngMessages', 'ngResource', 'ngRoute', 'ngSanitize', 'ngTouch' ]) .config(function ($routeProvider, $locationProvider) { $routeProvider .when('/', { templateUrl: 'views/main.html', controller: 'MainCtrl', controllerAs: 'main' }) .when('/howitworks', { templateUrl: 'views/howitworks.html', controller: 'HowItWorksCtrl', controllerAs: 'howitworks' }) .otherwise({ redirectTo: '/' }); $locationProvider.html5Mode(true); });
Now, if I go to http: // localhost: 3000 / , I get the main view of Angular, as expected. The problem is that I go to http: // localhost: 3000 / howitworks , which redirects me to http: // localhost: 3000 / index.html and does not display the "howitworks" view. How to fix the express router so that I can go to http: // localhost: 3000 / howitworks ?
source share