2017-03-05 5 views
1

node.js/express.js/react.jsアプリケーションに認証を追加しようとしています。エラーが理解できない

次のように私のディレクトリ構造は次のとおりです。

application 
    server.js 
    www 
    js 
     app.js 
     sessions.js 

私は私が私が前に見たことがない新しいメッセージが表示さnode server.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); 

に次の2行を追加します。

$ node server.js 
express-session deprecated req.secret; provide secret option www/js/sessions.js:16:22 

ブラウザに接続するとこのエラーが発生します。私は、プログラムが正常に動作server.jsから上記の2行を削除する場合:

ブラウザでは、私は例外を参照してください。

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をインストールしましたし、私はこれが他の誰かを助けないかもしれ

{ 
    "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" 
    } 
} 
+0

ああ、私はセッションにパスポートを渡していないと思います。 – Ivan

答えて

0

...そうかわからないpackage.jsonでそれを参照してください。

最初は、私がパスポートをセッションに渡していないという問題がありました。これは、その問題を修正:その後、私はそれで別の問題があった

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()]; 
関連する問題