我在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('../');
答案 0 :(得分:0)
我真的从未使用koa-locals,但目前你可以使用koa state 的内置功能将数据传递给你的视图。
this.state.utils = {
moment: require('moment'),
_: require('lodash')
};
答案 1 :(得分:0)
当您致电app.use(jade.middleware({
时,this.locals
会引用global
个对象。你不是在中间件关闭中,你只是使用this
(global
)而且从未在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
}));