我在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('../'); 发布于 2015-04-09 11:22:16
实际上,我从来没有使用过koa -,但是现在你可以使用koa状态的内置特性来将数据传递给你的视图。
this.state.utils = {
moment: require('moment'),
_: require('lodash')
};发布于 2016-04-22 09:33:09
在调用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
}));https://stackoverflow.com/questions/27234885
复制相似问题