Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模块。导出不适用于Express_Javascript_Node.js_Express - Fatal编程技术网

Javascript 模块。导出不适用于Express

Javascript 模块。导出不适用于Express,javascript,node.js,express,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) { re

我正试图组织快车的路线。但是我很难让一个简单的设置工作。我有两个文件,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;  
}
var express = require('express');
var app = express();

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

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

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

module.exports = router;
index.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;  
}
var express = require('express');
var app = express();

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

app.use('/',router);
app.listen(3000);
console.log('Listening on port 3000!');
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

var express = require('express');

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

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

app.use('/',router);
app.listen(3000);
console.log('Listening on port 3000!');
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不能工作。module.exports在这两种情况下不应该返回相同的express Router吗?

区别在于,在第一个版本中,您导出的函数返回路由器,而在第二个版本中,您导出的是路由器本身

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