nodejs在配置文件中获取当前url

时间:2014-03-09 14:17:38

标签: javascript node.js express

我使用快速框架,这是我的app.js文件

var express = require('express');
var app = module.exports = express();        
var config = require('./config.js')(app, express); // I include config.js here

var models = {};                                                       
models.item = require('./models/item')(app.mongoose, app).model;

require('./routes')(app, models);

app.listen(process.env.PORT || 3000);

如您所见,我在3行中包含config.js文件。这是我的config.js文件:

module.exports = function(app, express){
    var config = this;

    //generic config
    app.configure(function(){           
        app.set('CURRENT_URL', '***'); // I don't know how to get current URL here
        app.use(express.bodyParser());
        app.use(express.cookieParser());
        app.use(express.session({ secret: 'topsecret' }));     
        app.use(express.methodOverride());
        app.use(app.router);
        app.use(express.static(__dirname + '/public')); 
    });

    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));

    return config;
};

在第6行,我将CURRENT_URL设置为' * '。如何在这个地方检测当前的URL?

2 个答案:

答案 0 :(得分:2)

您可以使用中间件设置当前网址。

app.use(setCurrentUrl);

function setCurrentUrl(req, res, next) {
    app.set('CURRENT_URL', req.protocol + '://' + req.get('host') + req.originalUrl);
    next();
}

答案 1 :(得分:1)

我不认为您完全理解configure的作用,configure在您启动应用程序时仅被称为一次,而是定义配置< / strong>因此单词 configure

我认为您认为此功能会在每次请求时被调用。您可以从该功能获得的唯一网址是文件名和流程位置。

即。

__dirname;
process.cwd();

也许你想要app.use