越界发现,记录于 #3577 期间通读全文时。未在该 PR(#3616 )中顺手修改 —— 该单锁死在幽灵目录 / 内置示例 schema / Package Information 三条上,这是另一类断言(不存在的依赖 + 与实现相反的路由模型)。
事实(对 origin/main 复核,切点 622c23082)
## Extending the Runner → ### Add Custom Routes 让读者 "Edit src/App.tsx",给的是一段 react-router 代码:
import { BrowserRouter, Routes, Route } from 'react-router-dom'
两个问题:
react-router-dom 不是 @object-ui/runner 的依赖。 packages/runner/package.json 的 dependencies 是:@object-ui/{components,core,plugin-charts,plugin-kanban,react,types}、class-variance-authority、clsx、lucide-react、react、react-dom、tailwind-merge、tailwindcss-animate。照抄这段会直接 Failed to resolve import "react-router-dom"。
Runner 根本不是这个路由模型。 packages/runner/src/App.tsx 自己维护 currentPath state,导航走 window.history.pushState + popstate 监听,路径直接喂给 MetadataLoader.loadPage(path) —— 即路由由元数据决定 (src/app-data/pages/**.json 或 ?api= 后端的 pages/<path>.json),不是在 App.tsx 里手写 <Route> 表。fix(runner): 站内导航保留 query string,?api= 不再被抹掉 #3594 (查询串保留)与 content/docs/utilities/runner.mdx 三处结构性陈述与实现不符:src/schemas 目录、「内置示例 schema」、Package Information 的版本与发布状态 #3577 的 Metadata Loading 一节都建立在这个模型上。
所以这一节不只是「依赖没装」,它描述的扩展方式与 Runner 的设计方向相反:读者要加一个页面,正确做法是加一个 JSON 文件(本页 ### Add Custom Schemas 已经这么写了),不是改 App.tsx。
建议
按 #3533 家族的一贯口径处理(文档不许描述不存在的能力):整个 ### Add Custom Routes 小节删除,或改写成一句指向 ### Add Custom Schemas 的说明 —— 「Runner 的路由来自元数据:src/app-data/pages/ 下的文件名即路由,无需改代码」。若确实要保留「用 react-router 包一层」的玩法,那是另一个产品决定,需要先真的把依赖加进去,不该只留在文档里。
顺带:同一小节的示例里 <Home />、<Dashboard />、<CustomPage /> 三个组件在包里也都不存在,删除后一并消失。
Generated by Claude Code
越界发现,记录于 #3577 期间通读全文时。未在该 PR(#3616)中顺手修改 —— 该单锁死在幽灵目录 / 内置示例 schema / Package Information 三条上,这是另一类断言(不存在的依赖 + 与实现相反的路由模型)。
事实(对
origin/main复核,切点622c23082)## Extending the Runner→### Add Custom Routes让读者 "Editsrc/App.tsx",给的是一段 react-router 代码:两个问题:
react-router-dom不是@object-ui/runner的依赖。packages/runner/package.json的dependencies是:@object-ui/{components,core,plugin-charts,plugin-kanban,react,types}、class-variance-authority、clsx、lucide-react、react、react-dom、tailwind-merge、tailwindcss-animate。照抄这段会直接Failed to resolve import "react-router-dom"。packages/runner/src/App.tsx自己维护currentPathstate,导航走window.history.pushState+popstate监听,路径直接喂给MetadataLoader.loadPage(path)—— 即路由由元数据决定(src/app-data/pages/**.json或?api=后端的pages/<path>.json),不是在App.tsx里手写<Route>表。fix(runner): 站内导航保留 query string,?api=不再被抹掉 #3594(查询串保留)与 content/docs/utilities/runner.mdx 三处结构性陈述与实现不符:src/schemas 目录、「内置示例 schema」、Package Information 的版本与发布状态 #3577 的 Metadata Loading 一节都建立在这个模型上。所以这一节不只是「依赖没装」,它描述的扩展方式与 Runner 的设计方向相反:读者要加一个页面,正确做法是加一个 JSON 文件(本页
### Add Custom Schemas已经这么写了),不是改App.tsx。建议
按 #3533 家族的一贯口径处理(文档不许描述不存在的能力):整个
### Add Custom Routes小节删除,或改写成一句指向### Add Custom Schemas的说明 —— 「Runner 的路由来自元数据:src/app-data/pages/下的文件名即路由,无需改代码」。若确实要保留「用 react-router 包一层」的玩法,那是另一个产品决定,需要先真的把依赖加进去,不该只留在文档里。顺带:同一小节的示例里
<Home />、<Dashboard />、<CustomPage />三个组件在包里也都不存在,删除后一并消失。Generated by Claude Code