当我添加一个新的中间件来处理express.js中的path时,404没有find

我想做用户身份validation,并在用户点击loginbutton后返回一个页面,我使用express-generator启动项目,并在index.js和login.js中写入以下代码:

index.js:

var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { res.render('index'); }); module.exports = router; 

login.js:

 var express = require('express'); var router = express.Router(); /* GET main page after user have logged in. */ router.get("/login",function(req, res, next) { res.render('home'); }); module.exports = router; 

ps索引和home是视图文件夹中的帕格文件

这是我的app.js

 var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var index = require('./routes/index'); var users = require('./routes/users'); var login = require('./routes/login'); var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'pug'); // uncomment after placing your favicon in /public //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', index); app.use('/login', login); app.use('/users', users); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); module.exports = app; 

当我键入npm start时,index.js工作并正确显示页面,但是当我inputlocalhost:3000 / login时,它显示404找不到,我该如何解决这个问题?

这个:

 app.use('/login', login) 

结合这一点:

 router.get("/login", ...) 

为path/login/login创build一个路由处理程序。

由于您正在login路由器/login ,路由器本身应该定义其相对于该/login点的path,如下所示:

 router.get("/", ...) 

你的端点实际上是在/login/login 。 path文件追加到应用程序中设置的url。

 var express = require('express'); var router = express.Router(); // `/` Is appended to `/login` router.get("/",function(req, res, next) { res.render('home'); }); module.exports = router; 

在login.js中进行以下更改:

 router.get("/", function(req, res, next) { res.render('home'); });