Javascript Express Routes-多个文件的问题
我开始学习使用Express的Node.js,但我对路由系统没有什么问题 在我的app.js(我的主文件)中,我有:Javascript Express Routes-多个文件的问题,javascript,node.js,express,routes,Javascript,Node.js,Express,Routes,我开始学习使用Express的Node.js,但我对路由系统没有什么问题 在我的app.js(我的主文件)中,我有: var express = require('express'); var path = require('path'); var routes = require('./routes/index'); var admin = require('./routes/admin'); ... app.use('/', routes); app.use('/admin, admin);
var express = require('express');
var path = require('path');
var routes = require('./routes/index');
var admin = require('./routes/admin');
...
app.use('/', routes);
app.use('/admin, admin);
在index.js中:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', {
title: 'Express'
});
});
根url工作得很好,它正确地返回jade模板“index”
我尝试在不同的文件中为“admin”模板(位于“./routes/admin”中)执行相同的操作。
这里有一点,当我转到localhost:5000/admin(例如),它返回404错误
这是我的admin.js文件:
var express = require('express');
var router = express.Router();
router.get('/admin', function(req, res, next) {
res.render('admin', {
title: 'Connexion'
});
});
index.js和admin.js都包含module.exports=router代码>
如果有人有想法或想发表评论,欢迎
非常感谢(请原谅我的英语!)您的问题可能是您正在实例化express
及其路由器的多个实例,每个路由文件中都有一个实例。在app.js
文件中需要一个Router
,每个单独的routes文件都应该引用这个实例
作为一个想法,您可以在app.js
中将路由器传递到每个路由
文件:
// app.js
var admin = require('./routes/admin');
admin.init(router);
然后在您的admin.js
文件中:
var init = function(router) {
exports.router = router;
exports.router.get('/admin', function(req, res, next) {
// ...
});
}
您正在尝试路由此页面localhost:5000/admin/admin。app.use('/admin,admin);意味着admin.js中的所有函数都将被此请求localhost:5000/admin/…调用。。。
因此,如果您想使用localhost:5000/admin请求呈现admin.jade,您应该在
路线/索引
router.get('/admin', function(req, res, next) {
res.render('admin', {
title: 'Connexion'
});
});
或在routes/admin中插入此功能:
router.get('/', function(req, res, next) {
res.render('admin', {
title: 'Connexion'
});
});
它需要是:-app.use('/admin',admin)代码>(仅在第一部分周围加引号),而不是:-app.use('/admin,admin)代码>谢谢您的回答,它很有效。但是@dc2说了一件有趣的事情:在每个文件中调用express
和Router
intance是否是一个问题?