将护照快递到app.use(路线)
Express send passport to app.use(route)
我试图发送护照到app.use('/api')(护照),但我似乎得到一个错误时这样做。我应该把它发送给app.use()还是我可以在profile.js文件中require()它?我是一个新手,正在学习如何实现passport.js。
F:'App'node_modules'express'lib'router'index.js:140
var search = 1 + req.url.indexOf('?');
^
TypeError: Cannot read property 'indexOf' of undefined
at Function.handle (F:'App'node_modules'express'lib'router'index.js:140:27)
at EventEmitter.handle (F:'App'node_modules'express'lib'application.js:173:10)
at app (F:'App'node_modules'express'lib'express.js:38:9)
at ExpressRouter (F:'App'app'backend'router'routes.js:15:31)
at Object.<anonymous> (F:'App'app'backend'backend.app.js:36:27)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Module.require (module.js:468:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (F:'App'app'server.js:8:11)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
Server.js
var config = require('./config/config');
var logger = require('morgan');
var path = require('path');
var express = require('express');
var app = require('./backend/backend.app.js');
app.use(logger('dev'));
app.use(express.static('../'));
app.use(express.static(path.join(__dirname, './frontend')));
app.all('/*', function (req, res) {
res.sendFile(path.join(__dirname, './frontend/index.html'));
});
backend.app.js
var express = require('express');
var app = express();
var passport = require('passport');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
var config = require('../config/config');
var flash = require('connect-flash');
require('./models/user');
require('./lib/passport')(passport);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
app.use(cookieParser());
app.use(session({ secret: 'secret',resave: true, saveUninitialized: true }));
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
require('./router/routes')(app, passport);
module.exports = app;
routes.js
var profile = require('./routes/profile');
var isLoggedIn = function(req, res, next){
if(req.isAuthenticated())
return next();
res.redirect('/');
};
var ExpressRouter = function(app, passport){
app.use('/api', profile)(passport);
};
module.exports = ExpressRouter;
profile.js
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var User = mongoose.model('User');
module.exports = function (passport){
router.post('/signup', passport.authenticate('local-signup', {
successRedirect : '/',
failureRedirect : '/signup',
failureFlash : true
}));
return router;
};
在你的例子中,你必须用一个router对象作为第二个参数来调用app.use。所以,不用
app.use('/api', profile)(passport);
你应该在你的routes.js文件中这样写:
app.use('/api', profile(passport));
因为profile(passport)
返回一个express router对象
相关文章:
- 如何使用铁流星与流星的默认路线
- 在地图上画一条路线
- Cordova ng路线工作不正常
- 在angularjs/google地图中显示分支最近的路线
- AngularJs的动态模板显示具有相同的路线
- 调用谷歌地图路线服务时未捕获的异常
- Unit-testing multiple use cases with Karma & Mocha.js
- angularjs路线过渡如何以交互方式设置动画
- 我的流星路线出了什么问题
- 杜兰达尔默认路线有效,其他什么都没有
- 同时显示多条AngularJS路线
- 离子和角度:带标签的应用程序上的路线
- 为什么我的路线处理程序会触发两次
- 角度在60多分钟内路线问题
- 为位于路线上的谷歌地图标记(起点和终点)设置一个信息窗口
- 重定向到具有轨道的html5模式中的正确角度路线
- 基于谷歌地图API方向服务构建的替代路线
- 仅在Express4上使用app.use('/api')时呈现页面
- 将护照快递到app.use(路线)
- 向app.use()返回承诺的包裹快递路线