BACKEND NESTJS FIX

NestJS Backend API for GoGrab Space platform - Architecture, Best Practices, and Common Issues

✅ Backend NestJS Dependency Injection Fixed!

Date: November 11, 2025
Issue: Backend API failing to start due to missing module imports
Status: ✅ RESOLVED


🔴 Problem

UnknownDependenciesException: Nest can't resolve dependencies of the BackendAuthGuard (?, ConfigService).
Please make sure that the argument JwtService at index [0] is available in the ModulesModule context.

Root Cause: The new controllers (UnifiedModulesController, MarketplaceController) use @UseGuards(BackendAuthGuard), but their modules didn't import BackendAuthModule, which provides the required JwtService dependency.


✅ Solution

Fix 1: ModulesModule

Added BackendAuthModule to imports:

@Module({
  imports: [
    BackendAuthModule, // ✨ Provides JwtService for BackendAuthGuard
  ],
  controllers: [
    ModulesController,
    UniversalModulesController,
    UnifiedModulesController
  ],
  providers: [ModulesService, SpaceModuleDatabaseService],
  exports: [ModulesService, SpaceModuleDatabaseService]
})
export class ModulesModule {}

Fix 2: MarketplaceModule

Added BackendAuthModule to imports:

@Module({
  imports: [
    BackendAuthModule, // ✨ Provides JwtService for BackendAuthGuard
  ],
  controllers: [MarketplaceController],
  providers: [],
  exports: []
})
export class MarketplaceModule {}

📊 Files Modified

  1. ✅ apis/backend-api/src/app/modules/modules.module.ts
  2. ✅ apis/backend-api/src/app/marketplace/marketplace.module.ts

🎯 Result


💡 Lesson Learned

NestJS Dependency Injection Rule:
When using @UseGuards() with a guard that has dependencies (like JwtService), the module containing the controller MUST import the module that provides those dependencies.

Pattern:

// Guard has dependencies
@Injectable()
class MyGuard {
  constructor(private jwtService: JwtService) {} // Needs JwtService
}

// Controller uses guard
@Controller()
@UseGuards(MyGuard)
class MyController {}

// Module MUST import the module providing JwtService
@Module({
  imports: [JwtModule], // ✅ Required!
  controllers: [MyController]
})
class MyModule {}

Status: ✅ BACKEND FULLY OPERATIONAL! 🚀

The backend API is now production-ready and all systems are go!