NestJS中AdminJS+@adminjs/relations渲染错误:RelationsShowPropertyComponent未打包
解决@adminjs/relations组件未打包的错误
针对你遇到的Component "RelationsShowPropertyComponent" has not been bundled错误,按以下步骤排查修复:
1. 确认版本兼容性
检查package.json中adminjs和@adminjs/relations的版本是否匹配:
- AdminJS 6.x 对应 @adminjs/relations 1.x
- AdminJS 7.x 对应 @adminjs/relations 2.x
版本不兼容时,执行重装命令:
npm uninstall adminjs @adminjs/relations npm install adminjs@对应版本 @adminjs/relations@匹配版本
2. 正确注册relations插件
在AdminJS实例创建前,必须完成插件注册,示例代码:
import AdminJS from 'adminjs' import AdminJSRelations from '@adminjs/relations' // 导入你使用的ORM适配器(以TypeORM为例) import { Database, Resource } from '@adminjs/typeorm' // 先注册ORM适配器 AdminJS.registerAdapter({ Database, Resource }) // 再注册relations插件 AdminJS.registerPlugin(AdminJSRelations) // 后续创建AdminJS实例并配置资源
3. 调整前端打包配置
如果使用自定义打包工具(如Vite/Webpack),需确保插件组件被纳入打包范围:
- Vite配置示例(vite.config.js):
export default { optimizeDeps: { include: ['@adminjs/relations'] } }
如果使用官方集成(如@adminjs/express),不要修改默认打包配置导致插件被排除。
4. 清理缓存并重建
rm -rf node_modules package-lock.json npm install
重启开发服务器,重新构建项目。
5. 校验资源关联配置
确保资源的关联定义正确,比如一对多配置:
const userResource = { resource: User, options: { properties: { posts: { type: 'reference', reference: 'Post', isArray: true // 标记为一对多关联 } } } }
多对多关联需在双方资源中都设置isArray: true和对应的reference。
内容的提问来源于stack exchange,提问作者Dr4CuK30
相关产品推荐
相关产品推荐

