故障排查
常见报错与定位路径
1. server-only 报错
典型错误:
You're importing a component that needs "server-only"...
原因
客户端链路间接引入了服务端模块(通常是 fetcher.ts)。
检查顺序
- 检查
definition.ts是否导入了fetcher.ts(不允许)。 - 检查
core/catalog.ts是否只依赖 definition,不依赖 fetcher。 - 检查
pipeline.ts是否通过catalog-server.ts读取 fetcher。
2. 编辑器能看见区块,前台不显示
常见原因
capabilities.context设置错误,fetcher 依赖的上下文字段为空。- fetcher 返回结构和组件读取字段不一致。
- 组件没用
getBlockRuntimeData,直接读取错误路径。
3. 新增区块后在库里找不到
检查顺序
schema.blockType是否和definition.type一致。- 是否执行过
pnpm --filter web build:pre。 - 生成文件是否含该区块:
core/generated/block-definitions.tscore/generated/business-fetcher-catalog.ts
4. 预览正常但发布页异常
常见原因
- 预览上下文和页面上下文不同。
- fetcher 对空 slug/page 的处理不完整。
- 某些逻辑只在
mode=editor下生效(应避免)。
5. Lint / Type 报错排查建议
- 先跑
pnpm check-types,修类型。 - 再跑
pnpm lint,修风格和潜在问题。 - 最后重新执行生成脚本,确认产物没过期。
6. 生成脚本失败排查
- 看错误指向哪个文件路径。
- 确认该文件是否满足命名/导出约定。
- 对照自动发现规则修正后重试。