作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试用 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 可以工作,而顶部的却不能。 module.exports 不应该在两种情况下返回相同的 express Router 吗?
最佳答案
不同之处在于,在第一个版本中,您导出一个返回路由器的函数,而在第二个版本中,您导出路由器本身。 p>
在第一个版本中,Express 调用您的导出函数,将 req
和 res
传递给它,期望它以某种方式处理请求。导出的函数当然不是为了处理请求而设计的(它只是创建一个路由器并返回它),所以请求超时。
关于javascript - Module.Exports 不适用于 Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36226317/
我是一名优秀的程序员,十分优秀!