我试图在快递中组织路线。但是我在设置简单的设置时遇到了麻烦。我有两个文件, 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返回相同的快速路由器吗?
答案 0 :(得分:1)
不同之处在于,在第一个版本中,您导出返回路由器的功能与您导出路由器的第二个版本本身。
在第一个版本中,Express调用导出的函数,并将其传递给req
和res
,期望它以某种方式处理请求。导出的函数当然不是为处理请求而设计的(它只是创建路由器并返回它),因此请求超时。