0

私はこれを持ってい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 のドキュメントの例に奇妙な require があるのはなぜですか...

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

2 に答える 2

0

実際、私は koa-locals を使用したことはありませんが、現在、koa状態の組み込み機能を使用してデータをビューに渡すことができます。

this.state.utils = {
    moment: require('moment'),
    _: require('lodash')
};
于 2015-04-09T03:22:15.737 に答える
0

を呼び出しているときは、オブジェクトapp.use(jade.middleware({this.locals参照しglobalます。あなたはミドルウェアクロージャーの中にいません。あなたはthis( global) を使用しているだけで、(予想通り) locals はglobalオブジェクトに定義されていません。

たぶん、あなたが与えているのと同じオブジェクトを渡すだけですkoa-localsjade.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
}));
于 2016-04-22T01:33:09.357 に答える