我试图同时使用koa-tree-router和koa-bodyparser,但是我不断地得到TypeScript错误:
export const userLoggingRouter = new KoaTreeRouter<any, DefaultContext>();
userLoggingRouter.post('/logs/action', (ctx) => {
const logEntries = ctx.request.body;
const user = ctx.state.user;
// ...
});error TS2339:属性'body‘在类型'Request’上不存在。
我安装了@types/koa-bodyparser,它包含以下定义:
import * as Koa from 'koa';
declare module 'koa' {
interface Request {
body: string | Record<string, unknown>;
rawBody: string;
}
}但它似乎什么也没做。我找到了this question,但是直接导入koa-bodyparser也不起任何作用。如何让TypeScript识别扩展的Request类型?
编辑:在我的项目中创建一个包含以下内容的.d.ts文件:
import {Request} from "koa";
declare module "koa" {
interface Request {
body: any;
}
}使编译错误消失,但这似乎是一个不雅观的解决方案,因为我必须复制修改koa.Request的每个包的类型信息。
发布于 2021-06-20 21:14:20
之所以发生这种情况,是因为我正在使用Yarn PnP,并且安装了两个不同版本的@types/koa。一旦我将一个resolutions字段添加到我的package.json中,强制所有其他TypeScript定义使用相同版本的@types/koa,一切就都正常了。
https://stackoverflow.com/questions/68058375
复制相似问题