SvelteKit中route.id何时会为null?触发hook无路由ID的疑问
关于SvelteKit中RequestEvent.route.id为null的解惑
SvelteKit的hook(比如handle hook)并不是只有匹配到具体路由时才会触发——所有进入应用的请求,不管有没有对应路由,都会经过hook处理。这就是为什么TypeScript定义里route.id可能为null,常见场景包括:
- 请求静态资源:比如访问项目里的图片、CSS、JS这类静态文件时,SvelteKit不会匹配任何路由规则,
route.id自然是null,但hook依然会运行。 - 404请求:当访问的路径没有对应的路由(也没设置fallback路由)时,
route.id为null,hook还是会触发来处理这个请求。 - 内部资源请求:SvelteKit自身加载一些内部资产时发起的请求,也不会对应到用户定义的路由,此时
route.id就是null。
简单说,hook是请求的“全局入口”,不是绑定到具体路由上的,所以哪怕没有路由匹配,它也会执行,这就导致了route.id可能为null的情况。
内容的提问来源于stack exchange,提问作者CordlessWool
相关产品推荐
相关产品推荐

