Express.js和passport.js,但不能获得/login

我试图build立一个快速的应用程序,但现在我卡在login过程。 我不确定这与我遇到的问题有什么关系,但是我的学校分配说我必须使用passport.js来创build一个login表单。

所以,我遇到的问题是,每当我尝试在localhost:3000 / login的浏览器中呈现我的页面时,我都会收到以下消息:

CANNOT GET /login 

我的代码可能还有更多的问题,但由于我已经得到这个错误,所以不可能find。

我的默认应用程序文件

 const express = require('express'); const app = express(); app.listen(3000, () => { console.log('Example listening on port 3000!') }); const loginRoute = require('./routes/logins.js'); app.use('/login', loginRoute); const passport = require('passport') , LocalStrategy = require('passport-local').Strategy; passport.use(new LocalStrategy( function(username, password, done) { User.findOne({ username: username }, function(err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Incorrect username.' }); } if (!user.validPassword(password)) { return done(null, false, { message: 'Incorrect password.' }); } return done(null, user); }); } )); module.exports = app; 

我的路线/login文件:

 const express = require('express'); const router = express.Router(); const pug = require('pug'); const login = pug.compileFile('views/login.pug'); router.get('/login', function(req, res, next) { res.render('login', { title: 'Login' }); }); const passport = require('passport'); router.post('/login', passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login', failureFlash: true }) ); module.exports = router; 

我的意见/ login.pug文件:

  doctype html html head body h1 #{title} form(action='/login', method='post') div label Username: input(type='text', name='username') div label Password: input(type='password', name='password') div input(type='submit', value='Log In') 

如果有人能帮助我,我会非常感激。

因为您正在将路由器安装到path/login ,然后在您的路由器中有:

 router.get('/login', function(req, res){...}) 

Express将评估为localhost:3000/login/login

路由器文件中的path应与您所在的path相关。 所以对于localhost:3000/login您的logins路由器应该看起来像这样

 router.get('/', function(req, res){...}) //and router.post('/', function(req, res){...})