get user agent from inside jade
express, node.js, pug
Solution
Just write your own tiny middleware
app.use(function(req, res, next) {
res.locals.ua = req.get('User-Agent');
next();
});
Put this before your `app.router`
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
// here
app.use(function(req, res, next) {
res.locals.ua = req.get('User-Agent');
next();
});
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
Then you can use the `ua` variable in any `jade` template (for example `index.jade`)
extends layout
block content
h1= title
p Welcome to #{title}
p=ua
Problem
I am trying to port a script I wrote for groovy over to jade, and have run into a stumbling block I need to access the user-agent from inside a jade file. Here is what I have tried so far: ``` - var agent = req.headers['user-agent']; - var agent = headers['user-agent']; - var agent = navigator.userAgent; ``` every time I get a 500 error from express. Is this even possible? I know I could do it in a module and pass it to the render statement, but that would mean passing it to EVERY render, as it needs to be global. Very new to node, and confused. Thanks SO.