79783509

Date: 2025-10-06 09:28:59
Score: 0.5
Natty:
Report link

@Injectable() is needed when your service has dependencies. Here's the difference:

Works WITHOUT @Injectable() (simple service, no dependencies):

export class UserService {
  getUser() {
    return [{ account: 'dung', password: '12345678' }];
  }
}

BREAKS WITHOUT @Injectable() (service with dependencies):

// ❌ This will crash
export class UserService {
  constructor(
    private readonly databaseService: DatabaseService,  // dependency
  ) {}
  
  getUser() {
    return this.databaseService.findUsers();
  }
}

**Error you'll get:
**
Error: UserService is not a valid NestJS provider.

Please ensure that this class is decorated with @Injectable()

Works WITH @Injectable():

// ✅ This works
@Injectable()
export class UserService {
  constructor(
    private readonly databaseService: DatabaseService,
  ) {}
  
  getUser() {
    return this.databaseService.findUsers();
  }
}

Best practice: Always use @Injectable() even if your service has no dependencies now, because you might add them later.

Reasons:
  • Long answer (-1):
  • Has code block (-0.5):
  • User mentioned (1): @Injectable
  • Low reputation (1):
Posted by: Mohammad zrar