在我的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;
答案 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)