为什么需要module.exports = router?

时间:2019-05-10 13:16:24

标签: node.js express

在我的node.js服务器conf文件中,设置app.use('/user', user.js),它将/user路由映射到user.js文件。

然后,我在user.js文件中创建子路由,以处理我的获取或发布请求。

我的问题是:module.exports=router在此文件末尾的职责是什么?

如果我删除它,路由将停止工作,因此我不知道是否在这里告诉我的服务器配置文件user.js中是否有子路径?

var express = require('express');

var user = require('../../models/user');
var db = require('../../models/index');


var router = express.Router();


router.get('/addUser',function (req, res, next) {
  db.user.create(req.body)
    .then(user => res.json({

      data: user,

    }))
    .catch(error => res.json({
      error: true,
      data: [],
      error: error
  }));
});
module.exports = router;

2 个答案:

答案 0 :(得分:0)

完成时

var user = require('../../models/user');

user对象将从user.js中的模块中获取任何内容。因此,在user.js中,module.exports=router正在映射路由器和映射/user所需的所有逻辑(以及正确的回调等)

如果删除它,则您的require语句无法从该模块获取导出的对象,这就是失败的原因。您的用户对象将被有效地取消。

在此处查看更多信息:https://www.tutorialsteacher.com/nodejs/nodejs-module-exports

答案 1 :(得分:0)

路由器无法自行侦听(端口)请求。当您有很多路由时,路由器很有用。这对于将您的应用分为多个模块很有用。

const app = express()
app.listen(port) 

app正在侦听请求(而不是路由器),而user.js只是带有某些代码的单独js文件。

module.export中,模块是代表当前模块的变量,导出是一个对象。您分配给module.exports的所有内容都将作为模块公开。

已复制:Node.js中的模块是用单个或多个JavaScript文件组织的简单或复杂功能,可以在整个Node.js应用程序中重复使用。

一旦完成module.export = Router,现在您有了一个新创建的模块。在nodeJs中,需要使用一个模块才能使用它。 const user = require('./user.js')将执行该过程。在您的应用中需要节点模块后,您需要通过app.use('/' , user)

告诉它执行

或者您也可以执行以下操作

在您的user.js文件中,

var user = require('../../models/user');
var db = require('../../models/index');

module.export = (app) =>{
  app.get('/addUser',function (req, res, next) {
  db.user.create(req.body)
    .then(user => res.json({

      data: user,

    }))
    .catch(error => res.json({
      error: true,
      data: [],
      error: error
  }));
 });
}

在您的主要index.js中,

const app = express()
require('./user.js')(app)