Node.js 如何使用ES6在KOA.JS中创建中间件 我从最近使用Express ./P>的背景开始,第一次在Koa.JS建立应用程序。
我正在使用Babel在运行时传输代码,同时开发wirting ES6+代码给我带来的好处 <>我在膝关节炎中遇到一些问题,定义了我想使用并存储在CTX对象上的中间件,以便以后在我的应用程序中使用。我不确定哪里出了问题,因为我可以在Express中执行类似的操作(尽管不是在ES6代码中) 这是我的中间件:Node.js 如何使用ES6在KOA.JS中创建中间件 我从最近使用Express ./P>的背景开始,第一次在Koa.JS建立应用程序。,node.js,middleware,koa.js,Node.js,Middleware,Koa.js,我正在使用Babel在运行时传输代码,同时开发wirting ES6+代码给我带来的好处 我在膝关节炎中遇到一些问题,定义了我想使用并存储在CTX对象上的中间件,以便以后在我的应用程序中使用。我不确定哪里出了问题,因为我可以在Express中执行类似的操作(尽管不是在ES6代码中) 这是我的中间件: const Config = require('../../Config'); import jwt from 'jsonwebtoken'; const JWTController = ()
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;
});
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.js条目文件中使用中间件的部分:
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;
});
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();
})) 或者相反,从
next()更改原始中间件代码>到返回下一步()代码>