Bird
Raised Fist0
NestJSframework~10 mins

Shared modules in NestJS - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import a shared module in a NestJS module.

NestJS
import { Module } from '@nestjs/common';
import { SharedModule } from './shared/shared.module';

@Module({
  imports: [[1]],
})
export class AppModule {}
Drag options to blanks, or click blank then click option'
ACoreModule
BSharedModule
CCommonModule
DAppModule
Attempts:
3 left
💡 Hint
Common Mistakes
Importing the wrong module name.
Forgetting to add the module to the imports array.
2fill in blank
medium

Complete the code to export a service from a shared module.

NestJS
import { Module } from '@nestjs/common';
import { LoggerService } from './logger.service';

@Module({
  providers: [LoggerService],
  exports: [[1]],
})
export class SharedModule {}
Drag options to blanks, or click blank then click option'
ALoggerService
BDatabaseService
CAppService
DAuthService
Attempts:
3 left
💡 Hint
Common Mistakes
Exporting a service not provided in the module.
Forgetting to export the service.
3fill in blank
hard

Fix the error in the shared module to properly export the service.

NestJS
import { Module } from '@nestjs/common';
import { ConfigService } from './config.service';

@Module({
  providers: [ConfigService],
  exports: [[1]],
})
export class SharedModule {}
Drag options to blanks, or click blank then click option'
AConfig
BConfigModule
CSharedModule
DConfigService
Attempts:
3 left
💡 Hint
Common Mistakes
Exporting the module instead of the service.
Using incorrect names in the exports array.
4fill in blank
hard

Fill both blanks to create a shared module that provides and exports a service.

NestJS
import { Module } from '@nestjs/common';
import { [1] } from './cache.service';

@Module({
  providers: [[2]],
  exports: [[2]],
})
export class CacheModule {}
Drag options to blanks, or click blank then click option'
ACacheService
BCacheModule
CCacheController
DCacheProvider
Attempts:
3 left
💡 Hint
Common Mistakes
Using module or controller names instead of service names.
Not exporting the service after providing it.
5fill in blank
hard

Fill the blank to import a shared module so its exported service can be used in this module.

NestJS
import { Module } from '@nestjs/common';
import { [1] } from './shared/shared.module';

@Module({
  imports: [[1]],
})
export class AppModule {}
Drag options to blanks, or click blank then click option'
ASharedModule
BLoggerService
CAppService
DCoreModule
Attempts:
3 left
💡 Hint
Common Mistakes
Importing the wrong module.
Listing the service in providers (unnecessary).
Directly importing the service class.

Practice

(1/5)
1. What is the main purpose of a Shared Module in NestJS?
easy
A. To define database entities
B. To create a new controller for handling requests
C. To share providers and services across multiple modules
D. To configure middleware for the application

Solution

  1. Step 1: Understand the role of Shared Modules

    Shared modules are designed to hold providers and services that can be reused in different parts of the app.
  2. Step 2: Compare with other module roles

    Controllers handle requests, entities define data models, and middleware configures request handling, which are not the main purpose of shared modules.
  3. Final Answer:

    To share providers and services across multiple modules -> Option C
  4. Quick Check:

    Shared modules = share providers [OK]
Hint: Shared modules share providers, not controllers or entities [OK]
Common Mistakes:
  • Confusing shared modules with controllers
  • Thinking shared modules define database entities
  • Assuming shared modules configure middleware
2. Which of the following is the correct way to export a provider from a shared module in NestJS?
easy
A. Add the provider to the exports array in the module decorator
B. Add the provider to the controllers array
C. Add the provider to the imports array
D. Add the provider to the bootstrap array

Solution

  1. Step 1: Recall module decorator properties

    Providers are shared by listing them in the exports array of the module decorator.
  2. Step 2: Understand other arrays

    controllers is for controllers, imports is for importing other modules, and bootstrap is not used in modules.
  3. Final Answer:

    Add the provider to the exports array in the module decorator -> Option A
  4. Quick Check:

    Export providers via exports array [OK]
Hint: Use exports array to share providers [OK]
Common Mistakes:
  • Putting providers in controllers array
  • Confusing imports with exports
  • Using bootstrap array which doesn't exist in modules
3. Given this shared module code, what will be the output when AppModule injects CommonService and calls getMessage()?
import { Module } from '@nestjs/common';
import { CommonService } from './common.service';

@Module({
  providers: [CommonService],
  exports: [CommonService],
})
export class SharedModule {}

// CommonService
export class CommonService {
  getMessage() {
    return 'Hello from SharedModule';
  }
}

// AppModule
import { Module } from '@nestjs/common';
import { SharedModule } from './shared.module';

@Module({
  imports: [SharedModule],
})
export class AppModule {
  constructor(private commonService: CommonService) {}

  printMessage() {
    console.log(this.commonService.getMessage());
  }
}
medium
A. Error: CommonService not found
B. Undefined
C. Hello from SharedModule
D. Hello from AppModule

Solution

  1. Step 1: Check provider export and import

    SharedModule exports CommonService, and AppModule imports SharedModule, so CommonService is available in AppModule.
  2. Step 2: Understand service method call

    Calling getMessage() returns the string 'Hello from SharedModule'.
  3. Final Answer:

    Error: CommonService not found -> Option A
  4. Quick Check:

    Service must be injected via constructor and registered as provider [OK]
Hint: Import shared module to access exported services [OK]
Common Mistakes:
  • Forgetting to export the provider
  • Not importing the shared module in AppModule
  • Assuming service returns undefined
4. Identify the error in this shared module setup:
import { Module } from '@nestjs/common';
import { LoggerService } from './logger.service';

@Module({
  providers: [LoggerService],
  imports: [LoggerService],
  exports: [LoggerService],
})
export class LoggerModule {}
medium
A. LoggerService must be declared as a global provider
B. LoggerService should not be in the imports array
C. LoggerService should not be exported
D. LoggerService must be in controllers array

Solution

  1. Step 1: Review module decorator arrays

    The imports array is for importing other modules, not providers or services.
  2. Step 2: Identify correct placement

    LoggerService should be in providers and exports, but not in imports.
  3. Final Answer:

    LoggerService should not be in the imports array -> Option B
  4. Quick Check:

    Imports array = modules only [OK]
Hint: Imports array only accepts modules, not providers [OK]
Common Mistakes:
  • Putting providers in imports array
  • Confusing controllers with providers
  • Thinking exports are optional for sharing
5. You have two modules, FeatureModule and SharedModule. SharedModule exports UtilityService. You want FeatureModule to use UtilityService and also export it for other modules. How should you configure FeatureModule to achieve this?
hard
A. Import SharedModule and add UtilityService to FeatureModule controllers
B. Only import SharedModule in FeatureModule, no exports needed
C. Declare UtilityService again in FeatureModule providers and exports
D. Import SharedModule and export UtilityService in FeatureModule's exports array

Solution

  1. Step 1: Import SharedModule in FeatureModule

    To use UtilityService, FeatureModule must import SharedModule which exports it.
  2. Step 2: Export UtilityService from FeatureModule

    To share UtilityService further, FeatureModule must export it in its exports array.
  3. Final Answer:

    Import SharedModule and export UtilityService in FeatureModule's exports array -> Option D
  4. Quick Check:

    Import then export to re-share service [OK]
Hint: Import then export shared service to re-share it [OK]
Common Mistakes:
  • Not exporting UtilityService from FeatureModule
  • Re-declaring UtilityService providers unnecessarily
  • Adding services to controllers array
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard