首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确导入Express路由模块?

如何正确导入Express路由模块?
EN

Stack Overflow用户
提问于 2019-02-06 10:58:13
回答 2查看 1.1K关注 0票数 0

我和express-generator一起生成了一个项目。在我的路由目录中,我有两个文件:index.jsusers.js,以及处理/about路由的about.js

Error 404 : Page Not found中访问/about结果。

app.js中为/about添加处理程序时,错误消失了。

./app.js

代码语言:javascript
复制
var     createError = require('http-errors');
var     express = require('express');
var     path = require('path');
var     cookieParser = require('cookie-parser');
var     logger = require('morgan');

var     indexRouter = require('./routes/index')
var     aboutRouter = require('./routes/about');
var     usersRouter = require('./routes/users');

var     app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/about', aboutRouter);
app.use('/users', usersRouter);


// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});


// 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;

./route/index.js

代码语言:javascript
复制
var express = require('express');
var app = express();
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
        res.json( {
                message : "Home Page (Requeste for list)",
                method : req.method,
                Succes : "True"
        });
  // res.render('index', { title: 'Express' });
})

module.exports = router;

./routes/about.js

代码语言:javascript
复制
var express = require('express');
var router = express.Router();

router.get('/about', function(req, res) {
    res.send('im the about page!');
});
router.post('/about', function(req, res) {
    res.send('im the about page!');
});


module.exports = router;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-06 11:24:47

像这样重写你的router/about.js

代码语言:javascript
复制
var express = require('express');
var router = express.Router();

router.get('/', function(req, res) {
    res.send('im the about page!');
});
router.post('/', function(req, res) {
    res.send('im the about page!');
});


module.exports = router;

因为在app.js中,您已经在第24行声明了前缀/about,所以不必在router/about.js中再次声明前缀

票数 1
EN

Stack Overflow用户

发布于 2019-02-06 11:20:13

在app.js中,您已经将about路由器根设置为"/about“,而在"about.js”中,您再次指定了router.get('/about'),这将导致访问about路由必须使用/about/about (您可以在修复它之前尝试)。为了获得预期的结果,您应该在about.js中使用router.get(´/´),在app.js中使用keep as it is app.use('/about', aboutRouter);。您可以查看https://expressjs.com/en/guide/routing.html以获取更多信息。致以问候。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54546027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档