2017-06-04 8 views
-1

現在、node.jsとパスポートを持つシンプルなユーザー認証システムを構築しようとしていて、スケジュールされたSMSアプリケーションを表現しようとしています。 \ libに\ルータを表現\ zobri \ uabcprojects \ nodeauth \ node_modules \ \ユーザー:サーバーを初期化しようとしたときしかし、関係なく、私はGoogleで検索して試してみました修正の組み合わせ、cmdPromptはエクスプレスとパスポートでノード認証を設定しようとしています

$ノードappauth Cをレンダリングし続けるん\ index.js:458 新しいTypeErrorを投げます( 'Router.use()はミドルウェア機能が必要ですが、' + gettype(fn))があります。 ^

私は...私はチュートリアルを追っている理由として、見当もつかないが、一体何が起こっているかを把握することができないよう - 任意の助けをいただければ幸いです! ロバート

マイコード:

const express = require('express'); 
 
const path = require('path'); 
 
const cookieParser = require('cookie-parser'); 
 
const bodyParser = require('body-parser'); 
 
const expHandlebars = require('express-handlebars'); 
 
const expValidator = require('express-validator'); 
 
const expSession = require('express-session'); 
 
const flash = require('connect-flash'); 
 
const passport = require('passport'); 
 
const LocalStrategy = require('passport-local').Strategy; 
 
const database = require('mongodb'); 
 
const mongoose = require('mongoose'); 
 
mongoose.connect('mongodb://localhost/appAuth'); 
 
const db = mongoose.connection; 
 

 

 

 
// routes 
 
const routes = require('./routes/index'); 
 
const users = require('./routes/users'); 
 

 
// initialize application 
 
const app = express(); 
 

 
// view engine 
 
app.set('views', path.join(__dirname, 'views')); 
 
app.engine('handlebars', expHandlebars({ defaultLayout: 'layout' })); 
 
app.set('view engine', 'handlebars'); 
 

 
// body-parser middleware 
 
app.use(bodyParser.json()); 
 
app.use(bodyParser.urlencoded({ extended: false })); 
 
app.use(cookieParser()); 
 

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

 
// express session 
 
app.use(expSession({ 
 
    secret: 'rddremind', 
 
    proxy: true, 
 
    resave: true, 
 
    saveUninitialized: true 
 

 
})); 
 

 
// passport init 
 
app.use(passport.initialize()); 
 
app.use(passport.session()); 
 

 
// express validator (code snippet courtesy of 'https://github.com/ctavan/express-validator')\\ 
 

 
app.use(expValidator({ 
 
    errorFormatter: function(param, msg, value) { 
 
      var namespace = param.split('.'), 
 
       root = namespace.shift(), 
 
       formParam = root; 
 

 
      while (namespace.length) { 
 
       formParam += '[' + namespace.shift() + ']'; 
 
      } 
 
      return { 
 
       param: formParam, 
 
       msg: msg, 
 
       value: value 
 
      }; 
 
    } 
 
})); 
 

 
// connect flash 
 
app.use(flash()); 
 

 
// Global variables 
 
app.use(function(req, res, next) { 
 
      res.locals.success_msg = req.flash('success_msg'); 
 
      res.locals.error_msg = req.flash('error_msg'); 
 
      res.locals.error = req.flash('error'); 
 
      next(); 
 

 
    }), 
 

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

 
// set Port 
 
app.set('port', (proccess.env.PORT || 8081)); 
 

 
app.listen(app.get('port'), function() { 
 
    console.log('Server initialized on port ' + app.get('port')); 
 
});

+0

どのラインが458ですか? –

+0

@CharlieFish - 私はたくさんのコードを作っていませんし、indexという名前のローカルファイルもありません... NPMコード –

+0

でなければなりません。 –

答えて

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

これらの2行が正しくありません。ミドルウェアを使用してルートを設定する必要はありません。

require('./app/routefile1.js')(app, passport); 
require('./app/routefile2.js')(app, passport); 

私のルートを設定するには、上記のコードのようなものを使用します。もちろんあなたのパスに置き換えてください。この方法を使用する場合、以下の2行も必要はありません。

const routes = require('./routes/index'); 
const users = require('./routes/users'); 

コードとの良好なデバッグトリックを働くあなたは、コードの特定の部分に問題を絞り込むまでコードを削除するか、それをコメントアウト開始することです。そこから作業してください。

関連する問題