在 Express 中使用 PassportJS 和 Typescript,嘗試訪問時出現以下錯誤req.user.id。
Property 'id' does not exist on type 'User'.ts(2339)
僅記錄req.user到控制臺時,我可以清楚地看到有一個 id 屬性,但是 Typescript 仍然拋出此錯誤。
這是我嘗試運行的代碼片段,
userRouter.post("/session", async (req: Request, res: Response) => {
const { startTime, endTime, desc } = req.body;
const { user } = req;
console.log(user!.id);
res.json({ message: "CREATE NEW SESSION" });
});
由于我是 TS 新手,因此我不確定解決此問題的步驟。我的猜測是我必須在某處更改配置中的介面或其他內容。
uj5u.com熱心網友回復:
PassportJS 沒有宣告User介面的任何屬性。您可以通過將其與代碼中的以下內容合并來擴展此定義:
declare global {
namespace Express {
interface User {
id: string
}
}
}
你的代碼應該編譯。
但是您希望在哪里user.id填寫?您是否為此撰寫了自己的代碼?或者 PassportJS 是否填充了這個屬性,盡管它沒有宣告它?
(奇怪的是,我能夠通過更換“傻瓜式”打字稿編譯器user!.id使用user["id"]。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/405745.html
標籤:
