2016-09-10 4 views
0

Я реализую шаблон MVC в Node.js, и у меня есть его настройка, как описано ниже. Я получаю страницу на localhost, которая просто висит и «/» в моем console.log, поскольку у меня есть журнал.Node.js Ошибка маршрутизации MVC

app.js

var express = require("express"); 
var partials = require("express-partials"); 
var cookies = require("cookie-parser"); 
var session = require("express-session"); 
var uuid  = require("node-uuid"); 
var parser = require("body-parser"); 
var csrf  = require("csurf"); 
var compress = require("express-html-minify"); 

var logger = require("./controllers/logger"); 
var errors = require("./controllers/errors"); 
var utility = require("./controllers/utility"); 

var routes = require("./routes"); 

var app = new express(); 
var port = 80; 

app.set("view engine", "ejs"); 
app.set("views", __dirname + "/views"); 
app.set("view options", {defaultLayout: "layout"}); 

app.use(express.static(__dirname + "/public")); 

app.use(logger.log); 
app.use(partials()); 
app.use(cookies()); 
app.use(session({secret: uuid.v1(), resave: true, saveUninitialized: true})); 
app.use(parser.json()); 
app.use(parser.urlencoded({extended: false})); 
app.use(csrf()); 
app.use(utility.csrf); 
app.use(compress); 
app.use(routes.controller); 

app.use(errors.error); 
app.use(errors.notfound); 

app.listen(port); 
console.log("app listening on port " + port); 

./routes/index.js

var express = require("express"); 

var app = express(); 

var controllers = require("../controllers"); 

exports.controller = function() { 
    app.get("/", controllers.index); 
    app.get("/login", controllers.login); 
    app.post("/login", controllers.process); 
    app.get("/reset", controllers.reset); 
    app.get("/whoops", controllers.whoops); 
}; 

./controllers/index.js

exports.index = function(request, response) { 
    response.render("index", {layout: "layout", title: "Index", cookie: JSON.stringify(request.cookies), session: JSON.stringify(request.session)}); 
}; 

exports.login = function(request, response) { 
    response.render("login", {layout: "layout", title: "Login", cookie: JSON.stringify(request.cookies), session: JSON.stringify(request.session)}); 
}; 

exports.process = function(request, response) { 
    response.render("process", {layout: "layout", title: "Process", username: request.body.username}); 
}; 

exports.reset = function(request, response) { 
    response.render("reset", {layout: "layout", title: "Reset"}); 
}; 

exports.whoops = function(request, response) { 
    response.render("whoops", {layout: "layout", title: "Whoops"}); 
}; 

ответ

1

Есть несколько изменений, которые необходимо исправить проблема с маршрутизатором.

Файл «app.js» Изменения: -

1) Изменение маршрута, как указано ниже, хотя это не является обязательным для включения индекса в пути. Таким образом, вы явно ссылаетесь на индексный файл.

var routes = require("./routes/index"); 

2) Заменить "app.use (routes.controller)" код с кодом ниже

app.use('/', routes); 

Файл "маршруты/index.js" Изменения: -

Заменить содержимое файла, как указано ниже: -

Теперь запросы будут перенаправлены соответствующим методам в «controller/index.js» в соответствии с URL-адресом.

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

var controllers = require("../controllers/index"); 
router.get("/", controllers.index); 
router.get("/login", controllers.login); 
router.post("/login", controllers.process); 
router.get("/reset", controllers.reset); 
router.get("/whoops", controllers.whoops); 

module.exports = router; 
Смежные вопросы