You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AdminJS对接NestJS TypeORM报NoResourceAdapterError错误排查

NestJS + TypeORM 集成AdminJS报NoResourceAdapterError解决

错误现象

集成AdminJS到使用TypeORM的NestJS项目时,应用启动失败,抛出错误:

UnhandledPromiseRejectionWarning: NoResourceAdapterError: There are no adapters supporting one of the resource you provided

未集成AdminJS时项目所有功能运行正常,已尝试过以下操作仍未解决问题:

  • 在adminJsOptions中添加databases配置
  • 将resources配置从resources: [Usertest]替换为{ resource: Usertest }对象格式

问题相关的app.module.ts原始代码:

import { AdminModule } from '@adminjs/nestjs';
import { Database, Resource } from '@adminjs/typeorm';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { Usertest } from './usertestadminjs/entity/usertest.entity';
// import TypeORMAdapter from 'typeorm-adapter';

// AdminJS.registerAdapter(TypeORMAdapter);
AdminJS.registerAdapter({ Database, Resource });

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'postgres',
      host: 'hattie.db.elephantsql.com',
      port: 5432,
      username: 'ereree',
      password: 'rererer54f5453544',
      database: 'errerer',
      // entities: [Usertest],
      autoLoadEntities: true,
      synchronize: true,
    }),
    AdminModule.createAdmin({
      adminJsOptions: {
        rootPath: '/admin',
        resources: [Usertest],
        // databases: [Database],
        // resources: [
        //   {
        //     resource: Usertest,
        //   },
        // ],
      },
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

问题根因

报错触发的核心原因有两个:

  1. 缺失AdminJS核心类导入:代码中直接调用AdminJS.registerAdapter但未从adminjs包导入核心类,适配器注册逻辑实际未执行
  2. 资源未被正确识别:要么AdminJS相关依赖版本不兼容,要么仅开启autoLoadEntities时,直接导入的实体类未完成TypeORM连接注册,TypeORM适配器无法识别传入的资源

注意:注释中提到的typeorm-adapter是旧版第三方适配器,和官方维护的@adminjs/typeorm不能混用

修复步骤

  1. 对齐依赖版本,安装兼容的包版本:
# npm执行
npm install adminjs@^7.0.0 @adminjs/nestjs@^6.0.0 @adminjs/typeorm@^6.0.0 typeorm@^0.3.0
# pnpm执行
pnpm add adminjs@^7.0.0 @adminjs/nestjs@^6.0.0 @adminjs/typeorm@^6.0.0 typeorm@^0.3.0
# yarn执行
yarn add adminjs@^7.0.0 @adminjs/nestjs@^6.0.0 @adminjs/typeorm@^6.0.0 typeorm@^0.3.0
  1. 在app.module.ts顶部补全AdminJS核心类导入:
import AdminJS from 'adminjs';
  1. 在TypeOrmModule.forRoot配置中显式声明entities数组,加入Usertest实体,不要仅依赖autoLoadEntities给AdminJS传资源
  2. 修正后的完整app.module.ts代码:
import { AdminModule } from '@adminjs/nestjs';
import { Database, Resource } from '@adminjs/typeorm';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Module } from '@nestjs/common';
import AdminJS from 'adminjs';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { Usertest } from './usertestadminjs/entity/usertest.entity';

AdminJS.registerAdapter({ Database, Resource });

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'postgres',
      host: 'hattie.db.elephantsql.com',
      port: 5432,
      username: 'ereree',
      password: 'rererer54f5453544',
      database: 'errerer',
      entities: [Usertest],
      autoLoadEntities: true,
      synchronize: true,
    }),
    AdminModule.createAdmin({
      adminJsOptions: {
        rootPath: '/admin',
        resources: [Usertest],
      },
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

完成以上步骤后重新启动项目即可正常加载AdminJS面板。


内容的提问来源于stack exchange,提问作者Illusion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 13:12:18