【问题标题】:How to adminstrate configuration in node/express如何在 node/express 中管理配置
【发布时间】:2012-06-22 17:28:13
【问题描述】:

我想从我的 app.js 中删除配置并将其拆分为多个文件:

/config/app.js(整个app.configure(function(){});

/config/view.js(用于模板引擎配置)

不幸的是,javascript 不知道任何包含函数,我想避免自己编写。

那么从app.js 拆分配置的最佳方法是什么?

config.js

module.exports = function(app, express, passport){
app.configure(function(){
    app.use(express.logger());
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(express.session({ secret: 'kitty'}));
    app.use(passport.initialize());
    app.use(passport.session());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(__dirname + '/public'));
    app.use(express.errorHandler());
    app.set('views', __dirname + '/views');
    app.set('view options', { layout: false });
});
};

var config = require('./config/app.js')
var app = module.exports = express.createServer();

app.js

var app = express.createServer();
var config = require('./config/app.js')(app, express, passport);

【问题讨论】:

  • 没有包含功能是什么意思?你使用require,你就在那里!
  • 嗨,我更新了帖子。这是我首先尝试的,但这不起作用,我收到一个错误。

标签: javascript node.js express


【解决方案1】:

您似乎错误地使用了require。这样做:

app.js

var app = express.createServer();
var config = require('./config')(app);

config.js

module.exports = function(app) {
    app.configure(function () {
        app.use(express.logger());
        /* etc */
    });
};

【讨论】:

  • 嗨,我不得不放弃该函数的所有依赖项。我已经更新了我的帖子。这现在可以工作,但不是很聪明。有没有一种方法可以将所有依赖项映射到一个数组或一个对象中,而不是只放弃这个,同时保持依赖项的短 var 名称。
  • 其实你唯一需要传递的就是app对象。您可以在 config.js 模块中加载所有其他库。没有办法让这个过程自动化。
猜你喜欢
  • 2022-11-21
  • 1970-01-01
  • 2014-04-11
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 2020-11-05
  • 2016-04-06
相关资源
最近更新 更多