越界发现,记录于 #3617(PR #3633,删同页 Best Practices 的 Environment Configuration 小节)期间通读 Best Practices 全节及被删小节前后邻接时。未在该 PR 中顺手修改 —— 该单锁死在环境变量面那一处,这是同节里的另一件事,且与它不同,这一条不是纯清理(见文末)。
事实(对 origin/main 复核,切点 0e4ea07b2)
content/docs/utilities/runner.mdx 的 ### Error Boundaries 一条(PR #3633 合入前编号 ### 3.,合入后为 ### 2.)写:
import { ErrorBoundary } from '@object-ui/components'
< ErrorBoundary >
< SchemaRenderer schema={schema} / >
< /ErrorBoundary >
⚠️ 上面 JSX 的尖括号后特意加了空格:GitHub 的正文消毒器会把「< 紧跟字母」当 HTML 标签在存储时吃掉。本单初版正是这么丢掉三行 JSX 的(已修)。原文无空格。
@object-ui/components 没有这个导出。 grep -rn 'ErrorBoundary' packages/components/src 零命中;其 94 行的公开入口 packages/components/src/index.ts 同样零命中。
该组件真实所在是 @object-ui/app-shell:
packages/app-shell/src/chrome/ErrorBoundary.tsx:88 — export class ErrorBoundary
- 经
packages/app-shell/src/chrome/index.ts:7 与 packages/app-shell/src/index.ts:99 对外导出
另有两个同族但不同名的,均未出现在各自包的公开入口:
packages/react/src/SchemaRenderer.tsx:131 — export class SchemaErrorBoundary(packages/react/src/index.ts 里搜 Boundary 零命中)
packages/app-shell/src/views/metadata-admin/previews/PreviewShell.tsx:109 — export class PreviewErrorBoundary
这不只是「import 路径写错了」
packages/runner/package.json 的 dependencies 是:
@object-ui/components, @object-ui/core, @object-ui/plugin-charts,
@object-ui/plugin-kanban, @object-ui/react, @object-ui/types
不含 @object-ui/app-shell。 所以读者照着 Runner 这页把 specifier 从 @object-ui/components 换成 @object-ui/app-shell 也解析不到 —— 得先加一条依赖。而 Runner 已依赖的 @object-ui/react 里那个 SchemaErrorBoundary 又没公开导出。结论:按 Runner 当前的依赖面,没有任何可直接 import 的错误边界,这段示例整体不可执行。
#3618 是同页 ### Add Custom Routes 教 react-router-dom 而 runner 不依赖它;本条是 ## Best Practices 的 Error Boundaries 从一个不含该符号的包导入。同一种病(文档教读者 import 一个在 Runner 里够不着的东西),两处互不覆盖,故独立立单而非挂为 #3618 的 sub-issue。
为什么这条要分诊裁决,而不是照 #3538/#3617 口径直接删
#3617 之所以能当「已裁决只是半应用」的清理,是因为 #3538 已经就那个配置面裁过一次,且 Runner 没有任何配置面可承接。这一条不同 —— 错误边界是一个真实存在、只是放错了包/没导出的能力,三条路都说得通,取舍不在文档一侧:
倾向 (a)/(b) 之一,(c) 最重且会把一个 app-shell 语义的组件下沉到 Atoms 包;但这需要维护者定,故本单不带 pm:queue 自荐口径。
文件互斥提醒
content/docs/utilities/runner.mdx 目前有在途改动:PR #3633(#3617,Best Practices 环境变量小节)、#3618(Add Custom Routes)。本条也在同一文件,派发时需与它们串行或合并。
Generated by Claude Code
越界发现,记录于 #3617(PR #3633,删同页 Best Practices 的 Environment Configuration 小节)期间通读 Best Practices 全节及被删小节前后邻接时。未在该 PR 中顺手修改 —— 该单锁死在环境变量面那一处,这是同节里的另一件事,且与它不同,这一条不是纯清理(见文末)。
事实(对
origin/main复核,切点0e4ea07b2)content/docs/utilities/runner.mdx的### Error Boundaries一条(PR #3633 合入前编号### 3.,合入后为### 2.)写:@object-ui/components没有这个导出。grep -rn 'ErrorBoundary' packages/components/src零命中;其 94 行的公开入口packages/components/src/index.ts同样零命中。该组件真实所在是
@object-ui/app-shell:packages/app-shell/src/chrome/ErrorBoundary.tsx:88—export class ErrorBoundarypackages/app-shell/src/chrome/index.ts:7与packages/app-shell/src/index.ts:99对外导出另有两个同族但不同名的,均未出现在各自包的公开入口:
packages/react/src/SchemaRenderer.tsx:131—export class SchemaErrorBoundary(packages/react/src/index.ts里搜Boundary零命中)packages/app-shell/src/views/metadata-admin/previews/PreviewShell.tsx:109—export class PreviewErrorBoundary这不只是「import 路径写错了」
packages/runner/package.json的 dependencies 是:不含
@object-ui/app-shell。 所以读者照着 Runner 这页把 specifier 从@object-ui/components换成@object-ui/app-shell也解析不到 —— 得先加一条依赖。而 Runner 已依赖的@object-ui/react里那个SchemaErrorBoundary又没公开导出。结论:按 Runner 当前的依赖面,没有任何可直接 import 的错误边界,这段示例整体不可执行。与 #3618 同形不同处
#3618 是同页
### Add Custom Routes教react-router-dom而 runner 不依赖它;本条是## Best Practices的 Error Boundaries 从一个不含该符号的包导入。同一种病(文档教读者 import 一个在 Runner 里够不着的东西),两处互不覆盖,故独立立单而非挂为 #3618 的 sub-issue。为什么这条要分诊裁决,而不是照 #3538/#3617 口径直接删
#3617 之所以能当「已裁决只是半应用」的清理,是因为 #3538 已经就那个配置面裁过一次,且 Runner 没有任何配置面可承接。这一条不同 —— 错误边界是一个真实存在、只是放错了包/没导出的能力,三条路都说得通,取舍不在文档一侧:
SchemaErrorBoundary,得先在@object-ui/react的公开入口导出它(实现侧改动)。@object-ui/components本就该导出ErrorBoundary—— 那是实现侧的活,文档反而是对的。倾向 (a)/(b) 之一,(c) 最重且会把一个 app-shell 语义的组件下沉到 Atoms 包;但这需要维护者定,故本单不带
pm:queue自荐口径。文件互斥提醒
content/docs/utilities/runner.mdx目前有在途改动:PR #3633(#3617,Best Practices 环境变量小节)、#3618(Add Custom Routes)。本条也在同一文件,派发时需与它们串行或合并。Generated by Claude Code