Koa-locals不工作

时间:2014-12-01 18:33:47

标签: node.js koa

我在app.js ...

中有这个
    var koa = require('koa');
    var locals = require('koa-locals');
    var jade = require('koa-jade');

    var app = koa();

    locals(app, {
        moment: require('moment'),
        _: require('lodash')
    });

    app.use(jade.middleware({
       viewPath: __dirname + '/views',
       debug: true,
       pretty: true,
       compileDebug: false,
       locals: this.locals
   }));

你已经猜到了,moment在视图中未定义。

我错过了什么?顺便说一句,为什么koa-local的documentation在示例中有奇怪的要求......

var locals = require('../'); 

2 个答案:

答案 0 :(得分:0)

我真的从未使用koa-locals,但目前你可以使用koa state 的内置功能将数据传递给你的视图。

this.state.utils = {
    moment: require('moment'),
    _: require('lodash')
};

答案 1 :(得分:0)

当您致电app.use(jade.middleware({时,this.locals会引用global个对象。你不是在中间件关闭中,你只是使用thisglobal)而且从未在global对象上定义了本地人(预期)。

也许只是将您提供给koa-locals的同一个对象传递给jade.middleware

var koa = require('koa');
var locals = require('koa-locals');
var jade = require('koa-jade');

var app = koa();
var helpers = {
  moment: require('moment'),
  _: require('lodash')
};

locals(app, helpers);

app.use(jade.middleware({
   viewPath: __dirname + '/views',
   debug: true,
   pretty: true,
   compileDebug: false,
   locals: helpers
}));