Node.js + Express传递一个对象

我正在构build一个小型的node.js / express项目,并在configure.js中有一个函数,用于在我的快速应用程序中设置configuration选项。 例如:

server.js

var express = require('express'); var server = ('./configure'); var app = express(); server.configure(app); 

configure.js

 exports.configure = function(app) { app.set('title', 'Server'); }; 

这不起作用,但我希望它解释了我想要做的。 我想更改server.js中的应用程序实例。 我该怎么做呢?

编辑:

好吧,我想我可以得到这一切工作,如果我明白为什么这是行不通的。 这跟callback的时间有关吗? 第二个console.log()不被调用。

configure.js

 var fs = require('fs'); var StringDecoder = require('string_decoder').StringDecoder; var decoder = new StringDecoder('utf8'); function configure(app) { var config = module.exports = {}; fs.readFile('config.txt', function (err, data) { if (err) throw err; config.title = decoder.write(data) console.log(config.title) }); if(config.title) console.log(config.title); //app.set('title', config.title) } module.exports = function (app) { configure(app); }; 

server.js

 var express = require('express'); var cfg = require('./configure'); var fs = require('fs'); var app = express() cfg(app) 

(config.txt是echo'server'> config.txt)

你有什么实际上应该工作。

至于你使用多个函数的问题,你可以分别导出和调用每个函数。 当时间很重要时(例如,如果其他设置步骤需要在configure.js中没有指定),这可能很有用:

 // configure.js exports.configure = function (app) { // ... }; exports.attachMiddlware = function (app) { // ... }; 
 // server.js var express = require('express'); var server = require('./configure'); var app = express(); server.configure(app); server.attachMiddlware(app); 

您还可以将单个入口function定义为调用configure.js所需function的导出对象 。 这可以通过在configure.js隔离维护来保持server.js清洁:

 function configure(app) { // ... } function attachMiddleware(app) { // ... } module.exports = function (app) { configure(app); attachMiddleware(app) }; 
 var express = require('express'); var configure = require('./configure'); var app = express(); configure(app); 

我会避免这一点,只是做一个JSON对象:

app.js

 var cfg = require('./config'); app.set('title', cfg.title); 

config.js

 var config = module.exports = {}; config.title = 'Server';