Javascript Don';我不理解错误

Javascript Don';我不理解错误,javascript,node.js,reactjs,authentication,Javascript,Node.js,Reactjs,Authentication,我正在尝试向我的node.js/express.js/react.js应用程序添加身份验证 我的目录结构如下: application server.js www js app.js sessions.js 我将这两行代码添加到server.js var express = require('express'), app = express(), path = require('path'), http = requi

我正在尝试向我的
node.js/express.js/react.js
应用程序添加身份验证

我的目录结构如下:

application
    server.js
    www
    js
       app.js
       sessions.js
我将这两行代码添加到
server.js

var express = require('express'),
    app = express(),
    path = require('path'),
    http = require('http').Server(app),
    io = req

let sessions = require('./www/js/sessions');
app.use(sessions);
我运行
node server.js
我看到一条以前从未见过的新消息:

$ node server.js 
express-session deprecated req.secret; provide secret option www/js/sessions.js:16:22
然后在浏览器中,当我连接到时,我得到这个错误。如果我从
server.js
中删除上面的两行,程序运行正常:

在浏览器中,我看到异常:

TypeError: passport.initialize is not a function
   at module.exports.passport (/home/idf/Documents/js/react-trader/www/js/sessions.js:18:56)
   at Layer.handle [as handle_request] (/home/idf/Documents/js/react-trader/node_modules/express/lib/router/layer.js:95:5)
   at trim_prefix (/home/idf/Documents/js/react-trader/node_modules/express/lib/router/index.js:312:13)
   at /home/idf/Documents/js/react-trader/node_modules/express/lib/router/index.js:280:7
   at Function.process_params (/home/idf/Documents/js/react-trader/node_modules/express/lib/router/index.js:330:12)
   at next (/home/idf/Documents/js/react-trader/node_modules/express/lib/router/index.js:271:10)
   at expressInit (/home/idf/Documents/js/react-trader/node_modules/express/lib/middleware/init.js:33:5)
   at Layer.handle [as handle_request] (/home/idf/Documents/js/react-trader/node_modules/express/lib/router/layer.js:95:5)
   at trim_prefix (/home/idf/Documents/js/react-trader/node_modules/express/lib/router/index.js:312:13)
   at /home/idf/Documents/js/react-trader/node_modules/express/lib/router/index.js:280:7
我无法从错误中判断它是在抱怨找不到
sessions.js
,还是找不到
npm
需求。我确实安装了
express session
,我在
包.json中看到了它,所以不确定

{
  "name": "TraderWS",
  "version": "1.0.0",
  "description": "Trader Workstation",
  "main": "server.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Me",
  "license": "MIT",
  "dependencies": {
    "babel-loader": "^6.2.10",
    "babel-preset-es2015": "^6.22.0",
    "babel-preset-react": "^6.22.0",
    "body-parser": "^1.16.1",
    "connect-redis": "^3.2.0",
    "express": "^4.12.3",
    "express-session": "^1.15.1",
    "griddle-react": "^0.7.1",
    "react": "^15.4.2",
    "rx": "^4.0.7",
    "socket.io": "^1.3.5",
    "webpack": "^2.2.1"
  }
}

这可能会也可能不会帮助其他人

最初的问题是我没有将护照交给sessions。这解决了这个问题:

let usersService = require('./service/users');
let bodyParser = require('./middleware/bodyParser');
let passport = require('./config/passport');
let sessions = require('./middleware/sessions')(passport); // was missing parameter passport
然后我遇到了另一个问题,我有下面的代码和注释掉的版本,这导致了一个错误,因为没有秘密。一旦我真的输入了一个字符串密码,问题就消失了

'use strict';

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

let config = {
    //secret: process.env.SESSION_SECRET,
    secret: 'keyboard cat',
    saveUninitialized: false,
    resave: false
};

if (process.env.REDIS_URL) {
    const RedisStore = require('connect-redis')(session);
    config.store = new RedisStore({ url: process.env.REDIS_URL });
}

let expressSession = session(config);

module.exports = passport => [expressSession, passport.initialize(), passport.session()];

这可能会也可能不会帮助其他人

最初的问题是我没有将护照交给sessions。这解决了这个问题:

let usersService = require('./service/users');
let bodyParser = require('./middleware/bodyParser');
let passport = require('./config/passport');
let sessions = require('./middleware/sessions')(passport); // was missing parameter passport
然后我遇到了另一个问题,我有下面的代码和注释掉的版本,这导致了一个错误,因为没有秘密。一旦我真的输入了一个字符串密码,问题就消失了

'use strict';

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

let config = {
    //secret: process.env.SESSION_SECRET,
    secret: 'keyboard cat',
    saveUninitialized: false,
    resave: false
};

if (process.env.REDIS_URL) {
    const RedisStore = require('connect-redis')(session);
    config.store = new RedisStore({ url: process.env.REDIS_URL });
}

let expressSession = session(config);

module.exports = passport => [expressSession, passport.initialize(), passport.session()];

哦,我想我错过了向sessions传递护照。哦,我想我错过了向sessions传递护照。