Express.io“无法读取未定义的”expires“属性

这是我第一次使用node.js,我正在尝试使用express.io来保存cookie。

我从字面上复制了教程( https://github.com/techpines/express.io/tree/master/examples#sessions ),但我只收到此错误:

root@server1 [/nodeexample]# node server.js //Result after First Page Load { touch: [Function], resetMaxAge: [Function], save: [Function], reload: [Function], destroy: [Function], regenerate: [Function], name: 'test', feelings: 'test' } //Result after refresh /nodeexample/node_modules/express.io/node_modules/express/node_modules/connect/lib/middleware/session/memory.js:46 expires = 'string' == typeof sess.cookie.expires ^ TypeError: Cannot read property 'expires' of undefined at /nodeexample/node_modules/express.io/node_modules/express/node_modules/connect/lib/middleware/session/memory.js:46:47 at process._tickCallback (node.js:415:13) 

编辑:我有/ nodeexample中的主要服务器文件和客户端脚本: / home / mysite / public_html / nodetest

我注意到app.get似乎没有被调用。 最后的警报又回来了,你也join了undefined

在第二次刷新之前,错误不会出现,而且看起来好像它本来可以工作。

我的守则是:

服务器:

 express = require('express.io') app = express().http().io() // Setup your sessions, just like normal. app.use(express.cookieParser()) app.use(express.session({secret: 'monkey'})) // Session is automatically setup on initial request. app.get('/', function(req, res) { req.session.loginDate = new Date().toString() res.sendfile('/home/mysite/public_html/nodetest/client.html') }) // Setup a route for the ready event, and add session data. app.io.route('ready', function(req) { req.session.name = req.data req.session.save(function() { req.io.emit('get-feelings') }) }) // Send back the session data. app.io.route('send-feelings', function(req) { req.session.feelings = req.data req.session.save(function() { req.io.emit('session', req.session) }) console.log(req.session); }) app.listen(7076) 

客户:

  <script src="http://localhost:7076/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost:7076'); // Emit ready event. socket.emit('ready', prompt('What is your name?')) // Listen for get-feelings event. socket.on('get-feelings', function () { socket.emit('send-feelings', prompt('How do you feel?')); }) // Listen for session event. socket.on('session', function(data) { message = 'Hey ' + data.name + '!\n\n' message += 'Server says you feel '+ data.feelings + '\n' message += 'I know these things because sessions work!\n\n' message += 'Also, you joined ' + data.loginDate + '\n' alert(message) }) </script> 

我不知道我是否缺less依赖关系? 我用npm install express.io加载它

任何帮助是极大的赞赏!

好的,所以我终于明白了,Ben引导我走向正确的方向,这是由于app.get函数。 这是一个错误的理解客户端文件假设的位置。

req.sendfile将在打开时实际发送html到端口。 我有我的网站public_html中的客户端文件,而应该在节点服务器文件夹。

这种方式,当你去www.whateveryoursiteis.com:7076它会加载它加载你的HTML客户端。

 Files: /node/server.js /node/client.html Run: node /node/server.js Load: www.yoursite.com:7076 

我想这是一个非常简单的错误,这个答案可能会帮助另一个新手在途中