2016-06-06 8 views
1

Ich benutze Angular mit Express. Ich habe ein Problem, wenn ich versuche, Seite zu aktualisieren, die nicht Haupt '/' ist, wie Register Seite http://localhost:3000/register es gibt mir 404 Fehlerseite nicht gefunden.Express Winkel Refresh Seite Fehler 404

Dann habe ich diesen Code in meine server.js (express Datei)

app.all('/*', function(req, res) { 
    res.sendfile('public/index.html'); 
}); 

aber es i Schnee Stamm-URL immer umgeleitet wird. Ich möchte, wenn ich die Seite aktualisiere, um die Seite, auf der ich gerade bin, zu aktualisieren und mir die gleiche Seite erneut geben.

Meine server.js Datei ist

var express = require('express'); 
    var path = require('path'); 
    var favicon = require('serve-favicon'); 
    var logger = require('morgan'); 
    var passport = require('passport'); 
    var session = require('express-session'); 
    var cookieParser = require('cookie-parser'); 
    var bodyParser = require('body-parser'); 
    var mongoose = require('mongoose'); 
    //connect to mongodb 
    require('./models/user.js'); 
    require('./models/item.js'); 
    mongoose.connect("mongodb://localhost:27017/web-shop"); 

    var index = require('./routes/index'); 
    var api = require('./routes/api'); 
    var authenticate = require('./routes/authenticate')(passport); 

    var app = express(); 

    // view engine setup 
    app.set('views', path.join(__dirname, 'views')); 
    app.set('view engine', 'ejs'); 

    // uncomment after placing your favicon in /public 
    //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
    app.use(logger('dev')); 
    app.use(session({ 
     secret: 'super duper secret' 
    })); 
    app.use(bodyParser.json()); 
    app.use(bodyParser.urlencoded({ extended: false })); 
    app.use(cookieParser()); 
    app.use(express.static(path.join(__dirname, 'public'))); 
    app.use(passport.initialize()); 
    app.use(passport.session()); 

    //Initialize Passport 
    var initPassport = require('./passport-init'); 
    initPassport(passport); 

    app.use('/', index); 
    app.use('/api', api); 
    app.use('/auth', authenticate); 


    app.all('/*', function(req, res) { 
     res.sendfile('public/index.html'); 
    }); 


    // catch 404 and forward to error handler 
    app.use(function(req, res, next) { 
     var err = new Error('Not Found'); 
     err.status = 404; 
     next(err); 
    }); 

    // error handlers 

    // development error handler 
    // will print stacktrace 
    if (app.get('env') === 'development') { 
      app.use(function(err, req, res, next) { 
      res.status(err.status || 500); 
      res.render('error', { 
       message: err.message, 
       error: err 
      }); 
     }); 
    } 

// production error handler 
// no stacktraces leaked to user 
app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
    message: err.message, 
    error: {} 
    }); 
}); 


module.exports = app; 

Und thi ist mein Winkel Routing

app.config(function ($routeProvider, $locationProvider) { 
    $routeProvider 
     .when('/', { 
      templateUrl: 'main.html', 
      controller: 'itemController' 
     }) 
     .when('/login', { 
      templateUrl: 'login.html', 
      controller: 'authController' 
     }) 
     .when('/register', { 
      templateUrl: 'register.html', 
      controller: 'authController' 
     }) 
     .when('/add_item', { 
      templateUrl: 'dashboard.html', 
      controller: 'itemController' 
     }) 

     $locationProvider.html5Mode(true); 
}) 
+0

Können Sie bitte Ihre './routes/index' Datei teilen? –

+0

'var express = require ('express'); var router = express.Router(); router.get ('/', Funktion (req, res, next) { \t Res.Render ('Index', {Titel: "Naslov"}); }); module.exports = router; ' –

+1

Versuchen Sie, app.use ('/', index) zu entfernen; und dann überprüfen, ob es funktioniert. –

Antwort

1
app.all('/*', function(req, res) { 
    res.sendfile('public/index.html'); 
}); 

entfernen app.use ('/', Index); und es sollte gut funktionieren, da es obige Route nicht erlaubt, index.html jedes Mal zu senden, wenn es auf eine andere Route trifft als '/'