You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SvelteKit中扩展App.Locals接口并在服务端路由生效?

解决SvelteKit中扩展App.Locals类型的问题

当你在SvelteKit的服务端hooks中尝试给event.locals添加自定义属性(比如user)时:

event.locals.user = await getUserInformation(event.cookies.get('sessionid'));

TypeScript会抛出错误:

Property 'user' does not exist on type 'Locals'

这是因为默认的App.Locals接口是空的,属于正常的类型检查提示。要解决这个问题,只需扩展App.Locals接口,让TypeScript识别自定义属性:

  1. 找到项目src目录下的app.d.ts文件(如果没有就新建一个)
  2. 在文件中扩展App.Locals接口,添加你需要的属性,比如user和session:
declare namespace App {
  interface Locals {
    user: { id: string; name: string; /* 这里定义user的具体类型 */ };
    session?: { id: string; expiresAt: Date };
  }
}
  1. 保存文件后,TypeScript会自动识别这些类型定义,你在服务端hooks、服务端路由(比如+server.ts、+page.server.ts)中使用event.locals.user或event.locals.session时,就不会再出现类型错误,也不需要手动做类型转换。

这样定义后,所有服务端上下文里的locals对象都会自动拥有你声明的属性类型,无需重复定义。

内容的提问来源于stack exchange,提问作者CordlessWool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:55:15