Module.Exports不适用于Express

时间:2016-03-25 19:07:19

标签: javascript node.js express

我试图在快递中组织路线。但是我在设置简单的设置时遇到了麻烦。我有两个文件, api.js ,它有路由信息, index.js ,它运行服务器。

然而,当我尝试这个时,我对localhost:3000没有回应。

api.js

var express = require('express');

module.exports = function() {
  var router = express.Router();
  router.get('/', function(req, res) {
    res.send('im the home page!');  
  });
  return router;  
}

index.js

var express = require('express');
var app = express();

var router = require('./api');

app.use('/',router);
app.listen(3000);
console.log('Listening on port 3000!');

但是,当我将 api.js 更改为此时,它可以正常工作:

api.js

var express = require('express');

var router = express.Router();
router.get('/', function(req, res) {
  res.send('im the home page!');  
});

module.exports = router;

我不明白为什么最顶层的api.js在顶级api.js不起作用时起作用。在两种情况下,不应该模块化.exports返回相同的快速路由器吗?

1 个答案:

答案 0 :(得分:1)

不同之处在于,在第一个版本中,您导出返回路由器的功能与您导出路由器的第二个版本本身。

在第一个版本中,Express调用导出的函数,并将其传递给reqres,期望它以某种方式处理请求。导出的函数当然不是为处理请求而设计的(它只是创建路由器并返回它),因此请求超时。