当我添加一个新的中间件来处理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'); });
- 快速路由处理的pipe理员和pipe理员/ *具有相同的路线
- 一旦authentication,总是去索引页面,而不是login
- 不能基于TutorialPoint上的Node.js教程进行POST和DELETE
- 在html5模式下使用ng-route重新加载angular度页面不会返回index.html
- Node JS – Express.js通过多个参数来获取查询
- Node + Express:导致应用程序退出的loadtest错误:接受ENFILE
- expressionvalidation器总是无效的
- 在Express中的多个SELECT查询之后呈现视图
- 如何为快速申办的团体创build不同的注册页面?