开始: 非 OK 的 application/json 响应使服务器函数解析出未定义的内容,而不是拒绝
作者: antur84创建于 2026年9月7日更新于 2026年9月10日
标签information needed
这与哪个项目有关?
开始
描述错误
服务器功能调用在响应不正确、为应用程序/json'且没有x-ts-s-序列化'标题时用未定义'解决。 .catch()'从未运行。 与 " 文本/方言 " 拒绝者相同的500人。
在启动-客户-核心/src/客户-rpc/serverFnFatcher.ts'中,getResponse'在检查`response.ok'前返回普通JSON:
如果(ContentType.包括('应用程序/json')){ Const jsonPayload = 等待答复。 json () const 重定向 = 剖析方向( jsonPayload) 如果( 直接) 抛出方向 如果( 不是 Found( jsonPayload) ) 丢弃 jsonPayload 返回 json 码入 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? 如果 (! 回复.ok) { 丢出新错误( 等待回复. text ()) {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
" 创建ServerFn.ts " 中的中间软件将身体传播到调用上下文,返回`结果.结果',因此没有`结果 ' 键的错误机构变成`未定义 ' 。 一把有 " 错误 " 钥匙的尸体被扔在原地。
浏览器和服务器之间的任何 JSON 错误响应都会这样做: 当“ x- tsr- server” 时, 一个网关 502 页, 一个代理服务器, 或服务器自己的未处理的 500 Fn ' 失踪了(# 8237)。
* 完成最小复制器
https://GitHub.com/antur84/tanstack-start-serverfn-nonok-json-repro 互联网档案馆的存檔,存档日期2013-12-22.
复制臭虫的步骤
1. " pnpm 安装 && pnpm 建设 && pnpm 启动 "
2. 开放http://localhost:30:00/?mode=json500. 捡回500个JSON尸体 装载器用`未定义'解决。
3. 开放http://localhost:3:00/?mode=text:500,与 " text/plan " 相同。 装载器拒绝。
4. 开放http://localhost:3:00/?mode=noheader. 没有`x-tsr-serverFn'的真正请求。 服务器回答 QQ"状态": 500 "未处理": true "message":"HTTPError" QQ,加载器以"未定义"解决.
预期行为
“启动”没有序列化的反响应该拒绝,如“文本/解释”路径:
如果 (! response.ok) 丢出新的错误(JSON.stringify(jsonPayload))QQ 屏幕截图或视频
无,每页的横幅显示结果.
+++ 平台
启动-客户-核心 ' 1.170.28;启动-服务器-核心 ' 1.169.32;`启动-核心 ' 1.171.28;vite 8.2.2;节点24;macOS。 " main " 上相同的代码。
其他背景
修复8237号没有关闭。 任何JSON出错的机体都走同样的路径.
内容来源: TanStack/router