gpt4 book ai didi

node.js - 如何使用 ES6 在 Koa.js 中创建中间件

转载 作者:太空宇宙 更新时间:2023-11-03 23:24:52 27 4
gpt4 key购买 nike

在最近使用 Express 后,我第一次在 Koa.JS 中构建应用程序。

我在开发时使用 Babel 在运行时转译代码,这给了我编写 ES6+ 代码的好处。

我在 Koa 定义中间件时遇到问题,我想使用该中间件并将其存储在 ctx 对象上以便稍后在我的应用程序中使用。我不确定我哪里出了问题,因为我可以在 Express 中执行类似的操作(尽管不是在 ES6 代码中)。

这是我的中间件:

const Config = require('../../Config');

import jwt from 'jsonwebtoken';

const JWTController = () => {
return {
async generateToken(tokenVars) {
const secretKey = Config.auth.secret;
const claims = {
sub: tokenVars.userid,
iss: Config.auth.issuer,
account: tokenVars.accountId,
permissions: ''
};

let token = await jwt.sign(claims, secretKey);
return token;
},

async decodeClaims(token) {
const decodedToken = jwt.decode( token, {complete: true} );
return decodedToken;
}
}
};

export default JWTController;

以及我使用中间件的 app.js 入口文件部分:

});
mongoose.connection.on('error', (err) => {
console.log(err);
});

app.use(bodyParser());
app.use(serve(appRoot + '/../client'));
app.use(serve(appRoot + '/../client/assets'));

app.use((ctx, next) => {
ctx.JWTController = JWTController;
next();
});

有人能明白为什么这不起作用吗?

谢谢

最佳答案

将中间件定义更改为

app.use(async (ctx, next) => {
ctx.JWTController = JWTController;
await next();

});

关于node.js - 如何使用 ES6 在 Koa.js 中创建中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45594187/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com