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

AdminJS与Fastify、Mongoose集成时遭遇NoResourceAdapterError问题

解决AdminJS + Fastify + Mongoose构建后NoResourceAdapterError问题

在Node.js中集成AdminJS、Fastify和Mongoose时,开发环境(yarn dev)运行正常,但通过esbuild构建后执行bundle/out.mjs会抛出以下错误:

throw new NoResourceAdapterError(resourceObject);
              ^

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

问题根源

  • 开发环境与构建后环境的模块加载/注册顺序存在差异
  • AdminJS实例未正确关联Mongoose资源
  • esbuild外部依赖配置可能导致Adapter未被正确打包或加载

解决方案

1. 正确将资源传递给AdminJS实例

原代码中resources定义在单独变量中但未关联到AdminJS实例,导致AdminJS无法识别资源类型。修改app.ts:

// 调整顺序:先注册Adapter,再导入资源
import AdminJS from 'adminjs'
import * as AdminJSMongoose from '@adminjs/mongoose'

// 提前注册Mongoose Adapter
AdminJS.registerAdapter({
  Resource: AdminJSMongoose.Resource,
  Database: AdminJSMongoose.Database,
})

import AdminJSFastify from '@adminjs/fastify'
import Fastify from 'fastify'
import mongoose from 'mongoose'
import { Category } from './model/category.entity'

const PORT = 3000

const start = async () => {
  await mongoose.connect(`MONGO_URI`)
  const app = Fastify()
  
  // 直接在AdminJS构造函数中传入resources
  const admin = new AdminJS({
    databases: [],
    rootPath: '/admin',
    resources: [Category] // 关键:将资源添加到AdminJS实例配置
  })

  await AdminJSFastify.buildRouter(admin, app)

  app.listen({ port: PORT }, (err, addr) => {
    if (err) {
      console.error(err)
    } else {
      console.log(`AdminJS started on http://localhost:${PORT}${admin.options.rootPath}`)
    }
  })
}

start()

2. 调整esbuild外部依赖配置

将@adminjs/mongoose从external列表中移除,确保esbuild将其打包进产物,避免运行时模块解析问题:
修改esbuild.mjs的external数组:

external: [
  "fsevents",
  "nock",
  "aws-sdk",
  "mock-aws-s3",
  "adminjs",
  "@adminjs/fastify",
  "bcrypt",
  "crypto"
  // 移除 "@adminjs/mongoose"
],

3. 验证模块加载顺序

确保Adapter注册在所有Mongoose模型导入之前——ES模块静态导入严格按顺序执行,提前注册Adapter能保证AdminJS识别后续加载的Mongoose模型。


验证步骤

  1. 重新执行esbuild构建
  2. 运行node bundle/out.mjs
  3. 访问http://localhost:3000/admin确认正常加载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 03:00:08