2017-06-04 64 views
-1

我目前正在尝试建立一个简单的用户认证系统与node.js和护照,并表示为预定的SMS应用程序的进程;然而,试图初始化服务器时,不管修复的组合,我用Google搜索,并试图,cmdPrompt不断渲染试图建立与快递和护照节点认证

$节点APPAUTH C:\用户\ zobri \ uabcprojects \ nodeauth \ node_modules \表现\ LIB \路由器\ 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 - 我还没有编写这么多行代码,我也没有在这个目录中的本地文件称为索引...必须是NPM代码 –

+0

你到目前为止尝试过什么? –

回答

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

这两行是不正确的。您不想使用中间件来设置您的路线。

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

要设置我的路线,我使用类似上面的代码。当然取代你的路径。如果你使用这种方法,你也不需要下面两行。

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

当代码调试好的技巧是开始删除代码或评论它,直到你缩小问题到特定的代码部分工作。然后从那里工作。