CNode

书写app.use(...) 的先后顺序?

问答
CCodingMonkeyzh发布于11 年前最后回复11 年前7 回复5182 浏览0 收藏

刚开始玩Node, 一直以来我都以为app.use(...) 就像javascript的事件绑定一样,先后顺序影响也许并不大。 但是就在我今天用express写登陆逻辑的时候,掉进了这个坑 : (

由于在app.js中我把app.use(session(....))放在了路由绑定之后,导致路由中死活获取不到req.session

	  app.use('/login', login);
	  app.use(session({
		secret: settings.cookieSecret,
		key: settings.db,//cookie name
		cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
		store: new MongoStore({
		  db: settings.db,
		  host: settings.host,
		  port: settings.port
		})
	}));

后来把app.use(session(....))前置以后发现这个问题就KO了。 请教诸位前辈,由于app.js中一般都会绑定大量的app.use(...), 那么,绑定app.use(...)的顺序有没有什么规则需要遵守。

查看回复

回复 (7)

H
haozxuan#1·11 年前

先后顺序咯,可以理解为: console.log(a); var a = 1, b = 2; 你这样写肯定是undefined,同理,app.use依赖于加载顺序

L
luicfer#2·11 年前

用图论的说法 中间件的依赖关系是一个有向无环图 你的app.use()要符合 拓扑排序的顺序

Q
qianjiahao#5·11 年前

使用之前先配置,调用之前先声明

I
iwhys#6·11 年前

要先了解依赖关系 比如flash依赖session session依赖cookie

D
DavidCai1993#7·11 年前

可以参考express generator生成的中间件的顺序

参与回复
登录后即可参与回复。登录