将 koa 插件添加到 eggjs 框架

Add koa plugin to eggjs framework

我要补充 koa-validate to eggjs.

来自 koa-validate 的代码 readme:

var koa = require('koa');
var app = koa();
var router = require('koa-router')();
require('koa-validate')(app);

app.use(require('koa-body')({multipart:true , formidable:{keepExtensions:true}}));
app.use(router.routes()).use(router.allowedMethods());

所以我尝试按照 eggjs docs:

中的描述将其添加为中间件
// app/middleware/validate.js

const validate = require('koa-validate');

module.exports = (options, app) => {
    validate(app);
    return function session(ctx, next) {
        return next();
    }
}

但我真正想要的是 加载插件 'on boot' 并让应用程序对象添加验证插件。你知道我应该把它放在哪里吗?

谢谢!

好的,我自己解决了:

为生命周期钩子添加/app.js并添加以下代码:

const validate = require('koa-validate');
class AppBootHook {
    constructor(app) {
        this.app = app;
        validate(app);
    }
}
module.exports = AppBootHook;

而不是记录的 this.checkQuery() 函数可以这样使用。ctx.checkQuery.

也许这会对其他人有所帮助。

也许不是答案,但对于 egg js 验证,那里已经有一个官方插件:https://github.com/eggjs/egg-validate

真正的答案:您可以参考示例存储库:https://github.com/Jeff-Tian/egg-useragent。这是一个将 koa-useragent 添加到 eggjs 框架的真实示例。核心代码为:

import {Application} from "egg"

import koaUserAgent from 'koa-useragent'

export default (app: Application) => {
    app.use(koaUserAgent)
};