Meteor Session is not defined
之所以会产生这样的问题,是因为包含有Session的代码被server加载了,而Session只是在client服务,那什么时候用了Session的代码会被server加载呢,
这就要对Meteor的文件加载规则有所了解了。根据Meteor文件加载规则,除了client和test文件夹之外的所有文件夹都会在server加载。所以如果你的Session是在这样的
目录结构下的文件的话,就会导致Meteor Session is not defined。
client
---c1.html
--c1.js
server
--server.js
public
--hello.png
app
--hasSession.js //使用了Session,并且使用Session的源码的地方没有包含在Meteor.isClient中
app文件夹会在client和server都加载,但由于hasSession.js中含有Session,但server是没有Session的定义,所以会报错。
解决办法有两个
1 将使用了Session的代码放到Meteor.isClient内
if (Meteor.isClient) {
//Session code
}
2 将hasSession.js放进某个client文件夹里,在上例中,可以这么做
app
client
--hasSeesion.js
因为是放在client文件夹里,所以不会在server端加载。