快速路由:.get()需要回调函数但得到一个[对象]

JDi*_*522 25 javascript express

好吧,这对任何人都应该很容易指出.

我检查了其他类似的问题,没有人帮忙.

我正在尝试将所有路由移动到单独的routes.js文件中.在其中我有:

module.exports = function (app) {

  var user = {
      list : require('./routes/user.js')
    } 
  , index = {
      index : require('./routes/index.js')
    } 


  app.get('/', function(request, response){
    response.send('You made it to the home page.')
  });

  app.get('/users', user.list);
}
Run Code Online (Sandbox Code Playgroud)

在我的app.js文件中我有这个:

var register_routes = require('./routes.js')
register_routes(app)
Run Code Online (Sandbox Code Playgroud)

我的索引路由工作正常,但它会重新启动app.get('/users', user.list);此错误:

.get()需要回调函数但得到一个[object Object]

这是一个开箱即用的快递应用程序,因此不能描述太多.

谢谢.

编辑:每个请求,这里是./routes/user.js:

exports.list = function(req, res){
  res.send("respond with a resource");
};
Run Code Online (Sandbox Code Playgroud)

t.n*_*ese 19

使用list具有函数值的键导出对象.

因此,要访问您的功能,您需要执行此操作 require('./routes/user.js').list

或者使用您的代码user.list.list.

要解决这个问题,您有两种可能性.

写道:

var user = {
  list : require('./routes/user.js').list
}
Run Code Online (Sandbox Code Playgroud)

要么:

module.exports = function(req, res){
   res.send("respond with a resource");
};
Run Code Online (Sandbox Code Playgroud)

编辑

如果你routes/user.js以后可能会这样:

module.exports.list = function(req, res){
   res.send("respond with a resource");
};

module.exports.delete = function(req, res){
   res.send("delete user");
};
Run Code Online (Sandbox Code Playgroud)

如果是,那么你可以这样写routes.js:

var user = require('./routes/user.js');
Run Code Online (Sandbox Code Playgroud)