2017-01-05 7 views
0

Ich benutze Express als Server und in den letzten paar Tagen habe ich versucht, eine neue Routen unter dem Pfad "localhost: 3000/app/home" zu machen. Das Problem ist, dass ich einen 404 Fehler vom Server bekomme, wenn ich diesen Pfad öffne. Ich bin sicher, dass die Datei existiert, also denke ich, dass das Problem die Route Konfiguration von Express ist.Express Route funktioniert nicht

App.js

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var session = require('express-session'); 

var index = require('./routes/index'); 
var app_index = require('./routes/app'); 

var app = express(); 

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

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(cookieParser()); 

app.use(session({ secret: 'ashasjasdiw', resave: true, saveUninitialized: false })); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', index); 
app.use('/app', app_index); 


// 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 handler 
app.use(function(err, req, res, next) { 
    // set locals, only providing error in development 
    res.locals.message = err.message; 
    res.locals.error = req.app.get('env') === 'development' ? err : {}; 

    // render the error page 
    res.status(err.status || 500); 
    res.render('error'); 
}); 
app.listen(3000); 
module.exports = app; 

dies mein Weg ist App.js

var express = require('express'); 
var router = express.Router(); 

router.get('/app', function(req, res){ 
    res.render('app/home'); 
}); 
module.exports = router; 

ich eine Umleitung verwenden unter dem Pfad zu gehen "/ app/home" und i don Ich weiß nicht, ob das der beste Weg ist. dies ist der Fehlerseite: enter image description here

+0

Was schlagen Sie im Browser? – Dineshaws

+0

Ich fülle ein Login-Formular aus und wenn die Daten stimmen, leitet mich der Server zu dieser Seite weiter – PazzoTotale

Antwort

1

Sie die Montage der Route /app über die Anwendung des /app entfernen müssen. Die resultierende Route ist daher /app/app nicht /app/home. Wenn Sie auf die Route von /app/home zugreifen möchten, müssen Sie die Route zu /home ändern.

router.get('/home', function(req, res){ 
1

Ich glaube, Sie könnten die app von der Route in app.js

var express = require('express'); 
var router = express.Router(); 

router.get('/', function(req, res){ 
    res.render('app/home'); 
}); 
module.exports = router; 
0

Ich hatte das gleiche Problem. Ich habe schließlich erkannt, dass Sie in Ihrer app.js-Datei (Hauptdatei) app.use('/api','./routes/index'); verwenden. Wenn Sie in Ihre Datei index.js gehen, müssen Ihre router.get, router.post, router.put usw. router.get('/', function(...)) sein, die sich auf Ihre http://localhost/api beziehen!