尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Refine 使用 Inferencer 时控制台出现 404 请求是否影响功能?

Refine 使用 Inferencer 时控制台出现 404 请求是否影响功能? Refine 使用 Inferencer 时控制台出现 404 请求是否影响功能【免费下载链接】refineA React Framework for building internal tools, admin panels, dashboards B2B apps with unmatched flexibility.项目地址: https://gitcode.com/GitHub_Trending/re/refine在 Refine 的开发环境中使用refinedev/inferencer的 Inferencer 组件如AntdInferencer自动生成资源视图时浏览器控制台经常会打印大量404 (Not Found)网络错误。官方 FAQ 对此的结论很明确这些 404 与 Inferencer 组件本身有关不会影响到应用的功能可以安全地忽略来源FAQ 文档 的 Why are network errors showing in the console? 一节。下面说明这些 404 请求从哪里来、如何判断它们属于 Inferencer 的预期行为以及如何复现验证。404 请求的来源关系推断的探测请求Inferencer 的工作方式是先通过Refine/的dataProvider拉取数据再根据数据结构推断字段类型并生成视图和代码详见 Inferencer 文档 的 How it works? 一节edit、show动作发送带resource和id的请求list、create动作发送resource的列表请求并取其中一条数据来生成视图。在推断字段时如果一个字段满足可能是关系字段的条件例如属性名以id或ids结尾、属性是只含id的对象等Inferencer 会尝试确定它关联的资源先在resources数组中查找与属性名匹配单数或复数的资源找到就直接使用找不到时向defaultdataProvider发送两个探测请求一个用属性的单数名一个用复数名且都会去掉id后缀任一请求返回200该字段就被视为relation类型两个请求都失败Inferencer 会把relation标记从该字段上移除把它当作普通字段继续推断。控制台里那些404 (Not Found)就是第 4 步中探测失败的请求API 上没有对应的资源端点探测自然返回 404。另外浏览器在开发环境会不管 Promise 的成功与否都把网络错误打到控制台所以这些 404 会密集出现在 Network/Console 面板中但 Inferencer 内部已经按失败处理并继续推断页面功能不受影响。如何判断这些 404 可以忽略Refine 文档给出的可安全忽略的控制台网络错误有两类注意区分不要混为一谈现象来源处理使用 Inferencer 时出现大量404 (Not Found)Inferencer 推断资源间关系时的探测请求可安全忽略不影响功能401 (Unauthorized) from :5001/api/.auth/sessions/whoamiRefine Devtools在 Devtools 中无活动认证会话时打印登录 Devtools 后该错误会消失如果控制台出现的是其他与上述两类无关、也不是你自己项目逻辑发出的网络错误文档建议通过 GitHub Issues 或 Discord 社区反馈本文的结论不适用于这些情况。复现与验证按 Ant Design Inferencer 文档 的步骤复现即可安装 Inferencer 包pnpm add refinedev/inferencer在路由中直接使用 Inferencer 组件。下面以 Ant Design 为例示例中的 API 地址是文档中使用的示例接口替换成你自己的dataProvider地址import routerProvider from refinedev/react-router; import { BrowserRouter, Routes, Route } from react-router; import { Refine } from refinedev/core; import dataProvider from refinedev/simple-rest; import { AntdInferencer } from refinedev/inferencer/antd; const API_URL https://api.fake-rest.refine.dev; const App () { return ( BrowserRouter Refine routerProvider{routerProvider} dataProvider{dataProvider(API_URL)} resources{[ { name: samples, list: /samples, }, ]} Routes Route path/samples element{AntdInferencer /} / /Routes /Refine /BrowserRouter ); };如果使用routerProvider组件会自动从当前路由推断resource、action和id不需要传 props。打开/samples页面验证列表视图能按 API 返回的数据正常渲染页面上能看到 Inferencer 生成的视图代码代码查看器同时控制台出现若干404 (Not Found)。此时判定标准是视图渲染和代码生成正常——这正是 FAQ 所说的不影响功能。限制与边界refinedev/inferencer是实验性包处于早期开发阶段组件只适合开发环境使用不建议用于生产环境。也就是说这些 404 属于开发期的正常现象不是需要为生产修复的问题。如果你的dataProvider和resources的工作方式让 Inferencer 无法自动找到关系资源文档建议通过fieldTransformer属性手动修正推断出的字段例如改写字段的type、resource或accessor而不是依赖探测请求。开发模式下 Inferencer 的代码查看器和提示区块始终可见hideCodeViewerInProduction只在生产模式生效。排查结论确认 404 发生在访问 Inferencer 路由期间、且视图与生成代码正常即可按文档结论忽略它们不属于上述两类的其他网络错误则不在可忽略范围内。【免费下载链接】refineA React Framework for building internal tools, admin panels, dashboards B2B apps with unmatched flexibility.项目地址: https://gitcode.com/GitHub_Trending/re/refine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表