如何在另一个文件中正确应用路由

我是相当新的expressionjs,我想知道如何使用路由器。 我用这段代码在routes目录下创build了一个名为categories.js的文件。

类别.js代码:

var express = require('express'); var router = express.Router(); /* GET users listing. */ router.get('/categories', function(req, res) { res.send('this is the category'); }); module.exports = router; 

里面的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 routes = require('./routes/index'); var users = require('./routes/users'); var categories = require('./routes/categories'); var app = express(); var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'hjs'); // uncomment after placing your favicon in /public //app.use(favicon(__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('/', routes); app.use('/users', users); app.use('/categories', categories); // 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 handlers // development error handler // will print stacktrace if (app.get('env') === 'development') { app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: err }); }); } // production error handler // no stacktraces leaked to user app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: {} }); }); module.exports = app; 

我试图明白什么是错的,但我看不出来弄清楚。 提前致谢。

这是我得到的错误

未find

404

我想在路由目录中添加我有一个index.js文件,这个工程。

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

我想我的应用程序不读取categories.js文件,因为当我把category.js代码放在index.js里面的时候,它是有效的。 但它不起作用,如果我把它放在我的情况category.js单独的文件。

我认为你的分类路线错误,你的分类被映射到代码中的/categories/categories 。 要解决这个问题,请在你的app.js中试试这个:

 app.use('/', categories); 

如果你不想要前缀,你也可以简单地做到这一点:

 app.use(categories);