express动态视图助手换locals快疯了,求指导
发布于 12 年前 作者 lgyhitler 11618 次预览 最后一次回复是 10 年前 来自
官方的文档和社区的帖子都看过了,就是不好使啊。 这是我的代码:
app.configure(function(){
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.cookieSession({ key:"lgyCookie", secret: "mySecret" }));
// 使用flash插件
app.use(flash());
// 动态全局变量
app.use(function(req, res, next){
app.locals({
inspect: function(obj) {
return util.inspect(obj, true);
}
});
next();
}
);
app.use(app.router);
routers(app);
// 静态资源访问
app.use(express.static(__dirname + '/html'));
app.use(express.static(__dirname + '/html/js'));
app.use(express.static(__dirname + '/html/css'));
app.use(express.static(__dirname + '/html/img'));
});
ejs页面: <div class=“navbar-inner”> <div class=“container”> <%=inspect(headers) %> <ul class=“nav pull-right”> <li><a href="/logout">退出</a></li> </ul> </div> 控制台报错:
inspect is not defined10 回复
放在路由器之前
感谢回复,但是无济于事啊…
app.js
var myUtil = require(’./myUtil’); app.use(function(req, res, next){ res.locals.myUtil=myUtil; next(); }
myUtil.js
var MyUtil = function () { }; MyUtil.prototype.hello=function (name) { console.log('hello '+name); return 'hello '+name; } module.exports = new MyUtil();
index.ejs
<%=myUtil.hello(‘aaa’)%>
再次感谢你的回复~ 我按照你的建议把代码单独精简出来一个测试项目 试了一下还是不行啊,还是说user undefined这是我的所有代码,您运行一下试试 server.js
User.js
index.js
视图用的ejs home.ejs
如果这是你的全部的代码,肯定是有问题的。
你先参考我放到 github的工程,让程序先运行起来。
问一下 一定要加载路由吗?我之前也没引用ejs引擎 就是直接render 也可以实现数据绑定。这2者对 我的问题缺一不可?
@lgyhitler 我不知道是不是必须的。 但如果你不按照规范写程序,运行不起来就是自己的事情了。
@bsspirit 你的demo我运行起来了,我正在找这个问题的原因
最近刚加入nodejs 发现和楼主一样的问题,本人已经解决,猜测这个问题的原因是:路由的顺序放在了app.use(fn)之前,这样请求就会直接走路由,而不调用req.locals.xxx。
…中间件加载顺序呀 哥们 你被其他中间件return掉了