【发布时间】:2021-10-23 09:21:57
【问题描述】:
我在项目的根目录中有这个声明文件,名为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"]
}
我该如何解决这个问题?谢谢!
【问题讨论】:
标签: typescript fastify .d.ts