javascript - 在 nodejs 路由中导入模块
问题描述
我已经在 index.js 文件中声明了 socket.io,并且我会将 soket 对象传递给路由模块。
const express = require('express');
const app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var MongoClient = require('mongodb').MongoClient;
var server = require('http').Server(app);
var io = require('socket.io')(server);
var routes = require('./routes/routes')(io);
const dbb = mongoose.connect("mongodb://xxx:xxx@ds137600.mlab.com:37600/tasksdb");
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
app.use('/', routes);
var server= app.listen(3000, function () {
console.log('Example app listening on port 3000!')
})
路由.js
var express = require("express"); // call express
var taskSchema = require("../models/taskModel");
var mongoose = require("mongoose");
var router = express.Router(); // get an instance of the express Router
router
.route("/tasks")
.post(function (req, res, next) {
....
});
router
.route("/tasks")
.get(function (req, res) {
....
});
module.exports = router;
如何将其转移到 routes.js?有哪些不同的方法?我仍然不太了解模块的工作原理
解决方案
对于服务器:
const app = express();
app.use(logger('tiny'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use((req, res, next) => {
const origin = req.headers.origin;
if (allowed_header.indexOf(origin) > -1) {
res.header('Access-Control-Allow-Origin', origin);
}
res.header(
'Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, gutsyJwt, Accept'
);
next();
});
app.io = require('socket.io')({
origins: ['*:*'],
});
require('./routes')(app);
module.exports = app;
然后在路线:
module.exports = app => {
app.post('/api/bar', (req, res) =>
fooController.bar(req, res, app.io)
);
};
然后在控制器中:
module.exports = {
bar(req, res, io) {
io.emit('message', req.body.message);
res.status(200).send({msg: 'Message broadcasted!'});
},
};
在这篇文章中,如果您需要更多参考,它也会提出类似的问题。 ExpressJS 如何传递带有状态的对象(例如连接)?
推荐阅读
- python - 如何转换 CSV 文件中的 JSON URL?
- python - 抓取时如何绕过googletagmanager
- python - ValueError: int() 以 10 为底的无效文字:'' 出了什么问题
- c# - 当我们这样声明属性时,这意味着什么?
- java - java中输入为0时输出为1,输入为1时输出为0
- javascript - 从 GAS 中的 JSON 数据创建数组
- julia - Julia 的 minimumby 函数?
- javascript - 使用 react app ++ 运算符添加增量计数器不起作用
- solr - Solr 模式浏览器连字符转义问题
- dask - 将大于内存的 Dask 数组保存到 hdf5 文件