Deno HTTP处理器多路由实现及返回值错误解决问询
问题解决方案
1. 错误原因分析
你遇到的TypeScript错误,是因为当前函数仅在请求路径匹配/和/about时返回了Response,但当请求其他路径时没有任何返回值,TypeScript会认为函数可能返回undefined,这和你声明的返回类型Promise<Response>不兼容,所以抛出了错误。
2. 路由判断的正确姿势
直接比较req.url是不可靠的,因为req.url是完整的请求URL(比如http://localhost:8000/),而非单纯的路径部分。正确的做法是通过URL对象提取路径部分pathname来做路由匹配。
3. 修改后的完整代码
async function handler(req: Request): Promise<Response> { const url = new URL(req.url); const path = url.pathname; if (path === "/") { return new Response(`Ruta visitada ${path}`); } if (path === "/about") { return new Response(`Ruta visitada ${path}`); } // 处理所有未匹配的路由,返回404响应 return new Response("404 - Ruta no encontrada", { status: 404 }); }
关键改动说明
- 用
new URL(req.url).pathname获取纯路径部分,确保路由匹配的准确性。 - 添加了默认返回的404响应,保证函数在任何分支下都返回
Response,解决TypeScript类型错误。
内容的提问来源于stack exchange,提问作者Raxabi
相关产品推荐
相关产品推荐

