使用Node,Passport和Connect-Flash。为什么我的 Flash 方法未定义?



各位好。在遵循MEAN教程时,当我尝试req.flash('error') (第二个代码块的中间)

时,我得到了undefined is not a function错误

所以…我的控制器中是否缺少require,这将为我提供在express.js中明确设置的闪光功能?

我没有看到app在控制器的任何地方引用,所以我不确定控制器应该如何知道flash是什么。我理解exportsrequire是如何将文件链接在一起的,但这似乎并不适用于这里,并且在教程中没有解释。

express.js

 var flash = require('connect-flash');
    app.use(flash());

users.server.controller.js

var User = require('mongoose').model('User'),
    passport = require('passport');
...
exports.renderRegister = function(req, res, next) {
    if (!req.user) {
        res.render('register', {
            title: 'Register Form',
            messages: req.flash('error')
        });
    }
    else {
        return res.redirect('/');
    }
};
...

包。json显示我需要的一切都已安装

{
  "name": "myMEANapplication",
  "version": "1.0.0",
  "dependencies": {
    "body-parser": "^1.12.4",
    "connect-flash": "^0.1.1",
    "ejs": "^2.3.1",
    "express": "^4.12.4",
    "express-session": "^1.11.2",
    "gulp": "latest",
    "mongoose": "^4.0.3",
    "passport": "^0.2.2",
    "passport-local": "^1.0.0"
  }
}

已完成的教程项目页面的repo在这里。

你把你的

require('../app/routes/index.server.routes.js')(app);
require('../app/routes/users.server.routes.js')(app);

之前或之后的

app.use(flash());

?

最新更新