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();//viewenginesetupapp.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);///catch404andforwardtoerrorhandlerapp.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文件吗?如果有就加载没有的话再走路由?
2 回答
慕的地6264312
TA贡献1817条经验 获得超6个赞
把app.use('/',routes);放到app.use(express.static(path.join(__dirname,'public')));前面,express是按顺序匹配路由的。
添加回答
举报
0/150
提交
取消