[英]How do I extend Request's interface in Fastify with TypeScript
我在项目的根目录中有这个声明文件,名为fastify.d.ts
:
import { auth } from "firebase-admin";
declare module 'fastify' {
interface FastifyRequest {
user: auth.DecodedIdToken
}
}
我一直在使用将user
设置为传入请求,例如:
export default async function mustBeLoggedIn(
req: FastifyRequest,
reply: FastifyReply
) {
try {
const token = req.headers.authorization?.replace("Bearer ", "") ?? "";
const result = await auth.verifyIdToken(token);
req.user = result;
} catch (err) {
reply.status(401).send({
error: "You must be logged in to access this resource",
});
}
}
我收到错误: middlewares/mustBeLoggedIn.ts(13,9): error TS2339: Property 'user' does not exist on type 'FastifyRequest<RouteGenericInterface, Server, IncomingMessage>'.
当前tsconfig.json
:
{
"compilerOptions": {
"target": "es6",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "commonjs",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
},
"include": ["**/*.ts", "**/*.d.ts"],
"exclude": ["node_modules"]
}
我怎样才能解决这个问题? 谢谢!
尝试导入 FastifyRequest,像这样:
import FastifyRequest from "fastify";
import { auth } from "firebase-admin";
declare module 'fastify' {
interface FastifyRequest {
user: auth.DecodedIdToken
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.