猿问

express中一个诡异的现象

varexpress=require('express');
varpath=require('path');
varfavicon=require('static-favicon');
varlogger=require('morgan');
varcookieParser=require('cookie-parser');
varbodyParser=require('body-parser');
varroutes=require('./routes/index');
varusers=require('./routes/users');
varapp=express();
//viewenginesetup
app.set('views',path.join(__dirname,'views'));
app.set('viewengine','jade');
app.use(favicon());
//app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname,'public')));
app.use('/',routes);
app.use('/users',users);
///catch404andforwardtoerrorhandler
app.use(function(req,res,next){
varerr=newError('NotFound');
err.status=404;
next(err);
});
上面是用express初始化的代码,下面是index.js的代码
varexpress=require('express');
varrouter=express.Router();
/*GEThomepage.*/
router.get('/',function(req,res){
console.log("index");
res.render('index');
});
module.exports=router;
我访问http://localhost:3000/的时候直接返回的是public/index.html,没有通过router,也就是说console.log('index')这句没打印出来,如果把static那句放到路由设置后面的话就有打印,不知道是怎么回事?麻烦大家帮忙解答一下
追加:如果我把public文件夹底下的index.html文件移除掉就可以通过路由了,难道express会先查看public底下有没有index.html文件吗?如果有就加载没有的话再走路由?
HUX布斯
浏览 326回答 2
2回答

慕的地6264312

把app.use('/',routes);放到app.use(express.static(path.join(__dirname,'public')));前面,express是按顺序匹配路由的。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答