node.js 中的导出和模块导出
Exporting and module exporting in node.js
我在主根目录下有一个文件
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 和导出感到困惑,我的 module.exports 已经传递到另一个文件,我想添加另一个变量,即 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
exports
is just module.exports's
little helper. Your module returns module.exports
to the caller ultimately, not exports
. All exports does is collect properties and attach them to module.exports
IF module.exports
doesn't have something on it already. If there's something attached to module.exports already, everything on exports is ignored.
您可以将两者都作为对象传递
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
我在主根目录下有一个文件
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 和导出感到困惑,我的 module.exports 已经传递到另一个文件,我想添加另一个变量,即 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
exports
is justmodule.exports's
little helper. Your module returnsmodule.exports
to the caller ultimately,not exports
. All exports does is collect properties and attach them tomodule.exports
IFmodule.exports
doesn't have something on it already. If there's something attached to module.exports already, everything on exports is ignored.
您可以将两者都作为对象传递
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