Skip to content

content/docs/utilities/runner.mdx §Best Practices 的 Error Boundaries 从 @object-ui/components 导入 ErrorBoundary,但该符号在 app-shell,且 runner 不依赖 app-shell #3635

Description

@yinlianghui

越界发现,记录于 #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:88export class ErrorBoundary
  • packages/app-shell/src/chrome/index.ts:7packages/app-shell/src/index.ts:99 对外导出

另有两个同族但不同名的,均出现在各自包的公开入口:

  • packages/react/src/SchemaRenderer.tsx:131export class SchemaErrorBoundary(packages/react/src/index.ts 里搜 Boundary 零命中)
  • packages/app-shell/src/views/metadata-admin/previews/PreviewShell.tsx:109export 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 同形不同处

#3618 是同页 ### Add Custom Routesreact-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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions