常见问题 & 排错指南
这里整理了开发客户端插件时比较容易踩的坑。如果你遇到了"明明写对了但就是不生效"的情况,可以先来这里找找看。
插件相关
插件创建后在管理器里看不到
确认执行了 yarn pm create 而不是手动创建目录。yarn pm create 除了生成文件,还会把插件注册到数据库的 applicationPlugins 表里。如果手动创建了目录,可以执行 yarn nocobase upgrade 重新扫描。
插件启用后页面没有变化
按以下顺序排查:
- 确认执行了
yarn pm enable <pluginName> - 刷新浏览器(有时候需要强制刷新
Ctrl+Shift+R) - 检查浏览器控制台有没有 报错
修改代码后页面没有更新
不同类型的文件,热更新行为不一样:
如果客户端代码改了但没热更新,先试试刷新浏览器。
路由相关
注册的页面路由访问不到
NocoBase v2 的路由会默认加上 /v 前缀。比如你注册了 path: '/hello',实际访问地址是 /v/hello:
详见 Router 路由。
插件设置页点进去是空白
如果设置页菜单出现了但内容为空,通常是两个原因之一:
原因一:v1 client 用了 componentLoader
componentLoader 是 client-v2 的写法,v1 client 要用 Component 直接传组件:
原因二:页面组件没有用 export default 导出
componentLoader 需要模块有默认导出,漏了 default 就加载不到。
区块相关
自定义区块在「添加区块」菜单里看不到
确认在 load() 里注册了模型:
如果用的是 registerModels( 非按需加载写法),确认 models/index.ts 里正确导出了模型。
添加区块后,数据表选择列表里没有我的表
通过 defineCollection 定义的表是服务端内部表,默认不会出现在 UI 的数据表列表中。
推荐做法:在 NocoBase 界面的「数据源管理」中添加对应的数据表,配置好字段和接口类型后,表就会自动出现在区块的数据表选择列表里。
如果确实需要在插件代码里注册(比如示例插件里的演示场景),可以通过 addCollection 手动注册,详见 做一个前后端联动的数据管理插件。注意必须通过 eventBus 模式注册,不能直接在 load() 里调用——ensureLoaded() 会在 load() 之后清空并重新设置所有 collection。
自定义区块只想绑定特定数据表
在模型上覆盖 static filterCollection,返回 true 的 collection 才会出现在选择列表里:

