[英]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.