我只是在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频道上经常被问到的一个问题。

10-07 13:32