我在主根上有一个文件
test_file.js
以下是其中的代码
var config = require('config');
var Ctrl = require('./Controllers');
var port = process.env.PORT || config.get("PORT") || 3000;
var cors = require('cors');
var express = require('express');
var app = express();
var router = express.Router();
app.use(cors());
app.use(router);
var server = require('http').createServer(app);
var io = require('socket.io')(server, {'pingInterval': 4000, 'pingTimeout': 6000});
io.on('connection', Ctrl.connection);
console.log("Opening at port " + port);
server.listen(port, function () {
});
module.exports = router;
require('./Routes')();
我在路径中有另一个文件
/Controllers/index.js
我想将io
传递给index.js,这是它的代码
var Promise = require('q').Promise;
var config = require('config');
var mysql = require('mysql');
/// I want to get var io = require('../test_file.js');
/**Initialization socket connection */
exports.connection = function (socket) {
if (!(socket.handshake.query.accountType != null && socket.handshake.query.id != null && socket.handshake.query.accessKey != null
&& socket.handshake.query.id > 0)) {
socket.disconnect();
return;
}
现在我对module.exports和exports感到困惑,我的module.exports已经传递给另一个文件,我想添加另一个变量i-e io
并将其传递给控制器文件。我怎么能这样做
在回复查询时,
app.use(router);
var server = require('http').createServer(app);
var io = require('socket.io')(server, {'pingInterval': 4000, 'pingTimeout': 6000});
module.exports = {
router: router,
io: io
};
io.on('connection', Ctrl.connection);
console.log("Opening at port " + port);
server.listen(port, function () {
});
require('./Routes')();
在Controllers / index.js
中var Promise = require('q').Promise;
var config = require('config');
var mysql = require('mysql');
var Driver = require('./driver');
var User = require('./user');
var io = require('../test_file.js').io;
console.log("logging");
console.log(io);
结果为{} for io
答案 0 :(得分:0)
exports
只是module.exports's
小帮手。您的模块最终将module.exports
返回给调用方not exports
。所有导出都是收集属性并将它们附加到module.exports
如果module.exports
已经没有内容。如果已经有一些附加到module.exports的内容,则会忽略导出中的所有内容。
你可以将两者作为对象传递
module.exports = {
router: router,
io: io
};
Please refer this doc for more explanation
修改强>
通过module.exports访问对象
file.js
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
module.exports = {router:router};
使用
访问它var router=require('./file').router
OR
var router=require('./file');
router.router