首页
/ SST 项目中 Hono API 处理程序配置问题解析

SST 项目中 Hono API 处理程序配置问题解析

2025-05-09 19:00:37作者:翟江哲Frasier

在使用 SST 框架开发 Hono API 时,开发者可能会遇到一个常见的配置错误,导致 API 无法正常启动。本文将深入分析这个问题的原因和解决方案。

问题现象

当开发者尝试运行 sst dev 启动 Hono API 时,控制台会显示如下错误信息:

Function "ts" not found in "ts". Found default

错误表明系统无法找到预期的处理程序函数,而是找到了一个默认导出(default export)。

问题根源

这个问题的根本原因在于处理程序路径的配置方式不正确。在 SST 框架中,处理程序路径的格式有特定要求:

  1. 路径格式应为 [文件路径].[导出函数名]
  2. 当使用默认导出时,必须明确指定 default 作为导出函数名

在示例中,开发者配置了 aspect-api/src/index.handler,但实际代码中使用的是 export default app。这种不匹配导致 SST 运行时尝试从 .ts 扩展名中寻找处理程序函数。

解决方案

正确的配置方式有以下两种:

  1. 使用命名导出: 修改代码为命名导出:

    export const handler = app;
    

    然后配置为:

    handler: "aspect-api/src/index.handler"
    
  2. 使用默认导出(推荐): 保持代码不变:

    export default app;
    

    修改配置为:

    handler: "aspect-api/src/index.default"
    

最佳实践

对于 Hono 应用,建议采用默认导出方式,因为:

  1. 代码更简洁,不需要额外定义处理程序名称
  2. 与大多数 Hono 示例和文档保持一致
  3. 减少因命名不一致导致的配置错误

技术原理

SST 在处理函数导入时的工作流程:

  1. 解析配置的处理程序路径,分离文件路径和导出名称
  2. 动态导入指定文件
  3. 尝试从导入模块中获取指定名称的导出
  4. 如果找不到,抛出错误

当使用 .ts 扩展名作为导出名时,系统会错误地尝试从模块中查找名为 ts 的导出,而不是预期的处理程序函数。

总结

正确配置 SST 中的 Hono API 处理程序需要注意导出方式与配置的匹配性。理解 SST 的处理程序解析机制可以帮助开发者避免这类配置错误,提高开发效率。对于大多数 Hono 应用场景,使用默认导出并配置 index.default 是最简单可靠的方式。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
24
7
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
9
1
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
375
3.25 K
flutter_flutterflutter_flutter
暂无简介
Dart
619
140
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
62
19
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
1.03 K
479
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
647
261
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.09 K
619
giteagitea
喝着茶写代码!最易用的自托管一站式代码托管平台,包含Git托管,代码审查,团队协作,软件包和CI/CD。
Go
23
0
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
790
76