登录
注册
node.js 学习社区
关于express-session 一个非常诡异的问题!

enmotion

2016-08-27 01:57

各位大神,求助一个关于express-session的问题。
我搭建了一个简单的express模拟数据服务

这里是app.js原码

var express = require('express');

var path = require('path');

var favicon = require('serve-favicon');

var logger = require('morgan');

var cookieParser = require('cookie-parser');

var bodyParser = require('body-parser');

var routes = require('./routes/index');

var users = require('./routes/users');

var api= require('./routes/api');

var app = express();

// view engine setup

app.set('views', path.join(__dirname, 'views'));

app.set('view engine', 'jade');

// uncomment after placing your favicon in /public

//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));

app.use(logger('dev'));

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({ extended: false }));

app.use(cookieParser());

app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);

app.use('/users', users);

app.use('/api',api);

// catch 404 and forward to error handler

app.use(function(req, res, next) {

var err = new Error('Not Found');

err.status = 404;

next(err);

});

// error handlers

// development error handler

// will print stacktrace

if (app.get('env') === 'development') {

app.use(function(err, req, res, next) {

res.status(err.status || 500);

res.render('error', {

message: err.message,

error: err

});

});

}

// production error handler

// no stacktraces leaked to user

app.use(function(err, req, res, next) {

res.status(err.status || 500);

res.render('error', {

message: err.message,

error: {}

});

});


module.exports = app;
==================================================
这里是api.js的源码

var express = require('express');

var router = express.Router();

var session = require('express-session');

var myutil = require('../api_classpack/myutil.js');

var system_class= require('../api_classpack/system_class.js');

var user_class= require('../api_classpack/user_class.js');

var senti_class= require('../api_classpack/senti_class.js');

//console.log(system_class.save)

router.use(session({

secret:'mod session',

resave:true,

saveUninitialized:true,

cookie:{

}

}));

//根据类名获取类的实例;

function getClassInstanceByName($name_str){

switch($name_str){

case 'system':

return system_class;

break;


case 'user':

return user_class;

break;


case 'sentiment':

return senti_class;

break;


default:

return false;

break;

}

}

/* GET home page. */

router.get('/', function(req, res, next) {

res.send('this is a GET request!');

});

router.post('/',function(req,res,next){

res.send('ddddd');

});

module.exports = router;

问题:我访问api接口地址的时候,没有返回值,'ddddd',客户端提示超时,没有收到。但是只要我去掉 router.user(session... 代码段,就能成成功返回'ddddd';

同时这个问题只出现在

1.本机架设的本地服务访问上,如果把这个工程架设在其他机器上,本机访问没有问题
问题机->访问问题机器同一工程服务 有问题
问题机->访问其他机器同一工程服务 无问题
其他机->访问问题机同一工程服务 无问题


实在是太诡异了,思考不明白,请高人指点





回复 · 0

发表回复

你可以在回复中 @ 其他人