运行node.js服务器端脚本

时间:2015-10-18 15:46:25

标签: javascript node.js

尝试使用node.js使用命令node server尝试运行节点服务器时出现以下错误。

  

错误:

express-session deprecated undefined resave option; provide resave option server
.js:18:9
express-session deprecated undefined saveUninitialized option; provide saveUnini
tialized option server.js:18:9
C:\xampp\htdocs\cit_node\node_modules\express\lib\router\route.js:196
        throw new Error(msg);
        ^

Error: Route.get() requires callback functions but got a [object Undefined]
    at Route.(anonymous function) [as get] (C:\xampp\htdocs\cit_node\node_module
s\express\lib\router\route.js:196:15)
    at EventEmitter.app.(anonymous function) [as get] (C:\xampp\htdocs\cit_node\
node_modules\express\lib\application.js:481:19)
    at Object.<anonymous> (C:\xampp\htdocs\cit_node\server.js:20:5)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Function.Module.runMain (module.js:467:10)
    at startup (node.js:134:18)
    at node.js:961:3

我正在解释下面的服务器端代码。

  

server.js:

var port=8888;
var express=require('express');
var http=require('http');
var morgan         = require('morgan');
var bodyParser     = require('body-parser');
var methodOverride = require('method-override');
var expressSession = require('express-session');
var cookieParser = require('cookie-parser'); // the session is stored in a cookie, so we use this to parse it
var app            = express();
var server=http.createServer(app);
var admin=require('./route/route.js');
app.use(express.static(__dirname + '/public'));     // set the static files location /public/img will be /img for users
app.use(morgan('dev'));                     // log every request to the console
app.use(bodyParser.urlencoded({ extended: false }))    // parse application/x-www-form-urlencoded
app.use(bodyParser.json())    // parse application/json
app.use(methodOverride());                  // simulate DELETE and PUT
app.use(cookieParser());
app.use(expressSession({secret:'abcx'}));
app.post('/login',admin.adminlogin);
app.get('/session',admin.session);
//app.post('/logout',admin.logout);
app.get('/',function(req,res){
    res.sendfile('view/index.html');
});
server.listen(port);   
console.log('Magic happens on port'+port);          // shoutout to the user

在一段时间之前我能够运行这个但不知道为什么会抛出这种类型的错误。我的package.json文件如下所示。

{
  "name": "Gofasto",
  "main": "server.js",
  "dependencies": {
    "express": "4.13.3",
    "morgan": "1.6.1",
    "body-parser": "1.14.1",
    "method-override": "2.3.5",
    "socket.io":"1.3.7",
    "mongojs":"1.4.1",
    "cookie-parser": "1.4.0",
    "express-session": "1.11.3"
  }
}
  

route.js:

var mongo = require('mongojs');
var database='go_fasto';
var collections=['user'];
var db=mongo("127.0.0.1:27017/"+database, collections);
exports.adminlogin=function(req,res){
    var username=req.body.username;
    var password=req.body.password;
    db.user.findOne({
        user_name:username,
        raw_password:password
    },function(err,docs){
        if(!err){
            if(docs){
                console.log('docs',docs);
                ses=req.session;
                ses.username=docs.user_name;
                ses.user_type=docs.user_type;
                ses.email_id=docs.email;
                ses.dept_id=docs.dept_id;
                res.send(docs);
            }
        }
        if(err){
            res.send("could not login");
        }
    });
}
/*exports.logout=function(req,res){
    req.session.destroy(function(err){
if(err){
console.log(err);
}
else
{
res.redirect('/');
}
});
}
*/

我使用的是节点版本4.2.1。请帮我解决此错误。

1 个答案:

答案 0 :(得分:3)

根据评论,请看:https://github.com/expressjs/session/issues/56

您需要指定resavesaveUninitialized选项:

app.use(expressSession({
    secret: 'abcx',
    resave: true,
    saveUninitialized: true
}));

然后错误引用这行代码:

app.get('/session',admin.session);

因为admin.session

./route/route.js未定义
相关问题