如何与node + express共享一个对象

我正在使用Node + express,我试图找出如何与我的模块共享主js文件中的对象实例。 我有这个代码在bellow。

var express = require('express'); //libs var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var conf = require('config'); var logConf = conf.get('log'); var winston = require('winston'); //modules var index = require('./routes/index'); var users = require('./routes/users'); var camera = require('./routes/camera'); var face = require('./routes/face'); var secret = require('./routes/secret'); var attendance = require('./routes/attendance'); var azure = require('./routes/azure-test'); //configuring log var logger = new (winston.Logger)({ transports: [ new (winston.transports.Console)(), new (winston.transports.File)({ filename: logConf.get('file') }) ] }); require('events').EventEmitter.prototype._maxListeners = 200; var app = express(); /*Handling CORS*/ app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); res.header('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE'); next(); }); /*trying to avoid undesirable response code. *Ex: you send 200 and express send 304 ... annoying! */ app.disable('etag'); //setting image dir for static server app.use("/tmp", express.static(__dirname + '/tmp')); app.use("/public", express.static(__dirname + '/public')); app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); //app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); //putting modules in the game... app.use('/', index); app.use('/users', users); app.use('/camera', camera); app.use('/face', face); app.use('/attendance', attendance); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page console.error("LOCALS ERRORS: " + res.locals.error); console.error("LOCALS MESSAGES: " + err.message); JSON.stringify(res.locals.error || err.message)}); }); //Set port app.set('port', process.env.PORT || 7000) ; //setting public on static server //app.use(express.static(path.join(__dirname, 'public'))); //setting server up var server = app.listen(app.get('port'), function() { console.log('Express server listening on port ' + server.address().port); }); logger.info('starting application'); module.exports = app; 

目标不是在所有模块中configuration和实例化一个新的“winston”对象。 我在节点上不会说话,所以如果你有一些关于它的文档(我没有find),请指点我! 如果你想直接给我答案,更好!

谢谢!

你可以创build“共享”模块并定义你需要共享的东西

例如

 // shared.js var winston = require('winston'); var conf = require('config'); var logConf = conf.get('log'); var logger = new (winston.Logger)({ transports: [ new (winston.transports.Console)(), new (winston.transports.File)({ filename: logConf.get('file') }) ] }); module.exports = { logger: logger // other things } 

在其他文件中只需要shared.js并使用

 var shared = require('./shared'); var logger = shared.logger;