expressjs中的路由错误
我试图学习expressjs,并试图找出一种方法来添加MVC结构。 出于某种原因,当我尝试访问本地主机:3000时,出现404错误。
我的目录结构是:
- 应用
- app.js
- routes.js
- 控制器
- 意见
- 等等
App.js:
mymodule = { /* initialize * ============================== * load dependencies & external node modules, setup engines */ initialize: function() { // load modules this.express = require('express'); this.path = require('path'); this.favicon = require('static-favicon'); this.logger = require('morgan'); this.cookieParser = require('cookie-parser'); this.bodyParser = require('body-parser'); // initialize main express app. this.app = this.express(); // attach view engine to app this.app.set('views', this.path.join(__dirname, 'views')); // view files are in /views/ this.app.set('view engine', 'jade'); // attach modules to app this.app.use(this.favicon()); this.app.use(this.logger('dev')); this.app.use(this.bodyParser.json()); this.app.use(this.bodyParser.urlencoded()); this.app.use(this.cookieParser()); this.app.use(this.express.static(this.path.join(__dirname, 'public'))); // static files are in /public/ }, /* setErrorHandlers * =============================== * set error handlers for routing */ setErrorHandlers: function() { if (this.app == undefined) { console.log("caught an attempt to set error handlers without initializing"); } else { // Catch 404 Error and forward to error handler this.app.use(function(req, res, next) { console.log("Caught 404 Error"); var err = new Error('Not Found'); err.status = 404; next(err); }); // Error Handlers // 1) Dev Error Handler. print stack trace if (this.app.get('env') === 'development') { this.app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: err }); }); } // 2) Production Error Handler this.app.use(function(err, req,res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: {} }); }); } }, /* setRouters * ================================ * */ setRouters: function() { // get all routes this.routes = require('./routes').construct(this.app); } } mymodule.initialize(); mymodule.setErrorHandlers(); mymodule.setRouters(); module.exports = mymodule.app;'
routes.js:
var index_controller = require('./controllers/index').controller(); module.exports.construct = function(app) { console.log("got here"); //app.get('/', require('./controllers/index').about); //app.get('/', index_controller.index); app.get('/', function(req,res) {res.send("sdf");}); }
./controllers/index.js:
module.exports.controller = function() { index_action = function(req, res) { if (req == undefined) { console.log("req undefined!"); } else { console.log(req); res.render('index', {title: 'Express'}); } } return {index: index_action};
}
我把代码放在github上: https : //github.com/sjang92/expressjs-mvc/blob/master/controllers/index.js
有谁知道为什么会发生?
谢谢
您正在添加一个正常的中间件function,在app.get('/', ..);
之前响应请求app.get('/', ..);
处理程序有机会执行:
this.app.use(function(req, res, next) { console.log("Caught 404 Error"); var err = new Error('Not Found'); err.status = 404; next(err); });
您应该只在所有其他路由之后添加这种中间件。 例如:
mymodule.initialize(); mymodule.setRouters(); mymodule.setErrorHandlers();
- 想要了解NodeJS应用程序结构(Full JavaScript Stack)
- Nodejs网站不显示第二个MySQL表值
- 节点/expression4:在ajax文章上用express-validator显示错误
- 在mongodb中插入数据时添加一个条件
- node.js / socket.io,cookie只在本地工作
- 在mongo,node,passport和heroku上validation用户。 几天后停止工作
- 5个请求后,node.js http.get挂起到远程站点
- 查询Mongodb子文档错误将圆形结构转换为JSON
- 如何从Node.js / Express中的请求中检索实体正文(针对CSP违规报告)?