node.js - Serve static files and app.get conflict using Express.js -
i have piece of code here:
var express = require('express') , http = require('http') var app = express(); var server = app.listen(1344); var io = require('socket.io').listen(server); app.use(express.static(__dirname + '/public')); app.use(express.bodyparser()); app.use(express.cookieparser()); app.use(express.session({secret: 'secret'})); app.get('/', function(req, res){ if(req.session){ console.log(req.session); } console.log('ok'); }); the code inside app.get() callback not being called. if comment out app.use(express.static(__dirname + '/public')) line, callaback works. i've tried changing order, lottery! prefer know whats going wrong here.
i'm sure have lack of knowledge part on how middleware called. can me understand problem?
basically want perform logic before files served , index.html load on browser. way placing app.get() before app.use(express.static()) line, not did trick!
your static file middleware should go first.
app.use(express.static(__dirname + '/public')); app.use(express.bodyparser()); app.use(express.cookieparser()); app.use(express.session({secret: 'secret'})); and should adding use app.router well.
app.use(express.static(__dirname + '/public')); app.use(express.bodyparser()); app.use(express.cookieparser()); app.use(express.session({secret: 'secret'})); app.use(app.router); middleware processed in order each request. if have index.html in static files requests yourdomain.com/ never make app.router because served static file handler. delete index.html , request flow through app.router.
Comments
Post a Comment