Module.Exports不适用于Express

我正在试着组织路线。 但是,我很难得到一个简单的设置工作。 我有两个文件, 包含路由信息的api.js和运行服务器的index.js

然而,当我尝试这个,我没有得到本地主机: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工作时,顶部没有。 在两种情况下,不应该module.exports返回相同的高速路由器?

不同的是,在第一个版本中,您正在导出一个返回路由器的函数,而另一个版本则是您要导出路由器本身的地方。

在第一个版本中,Express调用你的导出函数,传递它的reqres ,期望它以某种方式处理请求。 导出的函数当然不是用来处理请求的(只是创build一个路由器并返回它),所以请求超时。