【问题标题】:Module.Exports not working for ExpressModule.Exports 不适用于 Express
【发布时间】:2016-03-25 19:07:18
【问题描述】:

我正在尝试以快递方式组织路线。但我无法让一个简单的设置工作。我有两个文件,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 不应该在两种情况下都返回相同的快速路由器吗?

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    不同之处在于,在第一个版本中,您要导出一个返回路由器的函数,而在第二个版本中,您要导出路由器本身。 p>

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-24
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 2020-08-05
      • 1970-01-01
      相关资源
      最近更新 更多