我只是在ExpressJS中尝试基本路由,到目前为止,我有两条路由:
app.get('/', function(req,res) {
res.render('index');
});
app.get('/pics', function(req,res) {
res.render('pics');
});
像这样定义时,在我的app.js中,一切正常,但是当按如下所示从我的
routes
子目录中的单个文件中导出时,我收到了错误消息,提示应有回调函数,但返回了对象未定义。index.js:
exports.index = function(req,res) {
res.render('index');
});
pics.js
exports.pics = function(req, res) {
res.render('pics');
};
app.js
var routes = require('./routes');
app.get('/', routes.index);
app.get('/pics', routes.pics);
在后面的示例中,我在做什么时打破了一切?
最佳答案
索引路由有效,但您的图片路由无效,因为您正尝试从index.js导入它。
路由目录包含index.js,这意味着如果您执行require('./route')
,则实际上是在执行require('./route/index')
。发生这种情况是因为index.js在Node.js中具有特殊含义。
因此,要使照片正常工作,您需要执行以下操作:
app.get('/pics', require('./routes/pics').pics);
这可能确实令人困惑,并且是在IRC频道上经常被问到的一个问题。