The [$injector:modulerr] error in AngularJS occurs when the app fails to load a module due to issues such as:
- Missing dependencies
- Incorrect module definitions
- Syntax errors in module files
1. Understanding the [$injector:modulerr] Error
When AngularJS initializes, it looks for all declared modules and their dependencies. If it fails to find or load any module, it throws the [$injector:modulerr] error.
Error Example in Console:
[$injector:modulerr] Failed to instantiate module myApp due to:
Error: [$injector:modulerr] Failed to instantiate module myDependency due to:
Error: [$injector:nomod] Module 'myDependency' is not available!
What this means:
myAppdepends onmyDependency, but AngularJS cannot findmyDependency.
2. Common Causes & Fixes
1. Missing Dependency in angular.module()
Issue:
The module dependency is missing in the angular.module declaration.
Incorrect Code:
angular.module('myApp', []); // Missing 'myDependency'
Fix:
Ensure all dependencies are included:
angular.module('myApp', ['myDependency']);
Check that myDependency is defined correctly before using it.
2. Module Not Loaded in script Tag
Issue:
The dependency module is not included in the HTML file.
Incorrect Code (Missing Script):
<script src="angular.min.js"></script>
<script src="app.js"></script> <!-- 'myDependency' is missing -->
Fix:
Include all module scripts before the main app file:
<script src="angular.min.js"></script>
<script src="myDependency.js"></script> <!-- Add dependency module -->
<script src="app.js"></script>
Ensure correct order of scripts! The dependency must be loaded before the main app.
3. Typo in Module Name
Issue:
The module name is spelled incorrectly in angular.module().
Incorrect Code:
angular.module('myApp', ['MyDependency']); // Wrong casing
Fix:
Ensure the module name matches exactly:
angular.module('myApp', ['myDependency']); // Correct name
AngularJS module names are case-sensitive.
4. ng-app Defined Incorrectly
Issue:
If the ng-app directive is missing or does not match the module name, AngularJS won’t bootstrap the app.
Incorrect Code:
<div ng-app="wrongAppName"> <!-- Mismatched name -->
Fix:
Ensure the ng-app directive matches the module name:
<div ng-app="myApp">
5. Circular Dependency Between Modules
Issue:
Modules depend on each other, causing a circular dependency.
Incorrect Code (Circular Dependency):
angular.module('moduleA', ['moduleB']);
angular.module('moduleB', ['moduleA']);
What happens?
moduleArequiresmoduleB, butmoduleBalso requiresmoduleA, causing an infinite loop.
Fix:
Avoid circular dependencies. If needed, use services instead of direct dependencies.
6. angular.module() Called More Than Once for the Same Module
Issue:
Calling angular.module('myApp', []) twice redefines the module, causing conflicts.
Incorrect Code:
angular.module('myApp', []); // First definition
angular.module('myApp', []); // Overwrites the first one!
Fix:
Use .module('myApp') without redefining it.
angular.module('myApp', []); // Define only once
angular.module('myApp'); // Access existing module
7. Module File Contains Syntax Errors
Issue:
If a JavaScript file has a syntax error, the module fails to load.
Example Error (Syntax Mistake):
angular.module('myApp', [
'dependency1',
'dependency2' // Missing comma here
'dependency3'
]);
Fix:
Ensure correct syntax:
angular.module('myApp', [
'dependency1',
'dependency2',
'dependency3'
]);
Check the browser console for syntax errors!
8. Using AngularJS 1.x Syntax with Angular 2+
Issue:
If an AngularJS module (angular.module()) is used in an Angular 2+ app, it will fail.
Incorrect Usage in Angular 2+:
angular.module('myApp', []); // Angular 2+ does not use this!
Fix:
In Angular 2+, use NgModule instead of angular.module():
import { NgModule } from '@angular/core';
@NgModule({
declarations: [],
imports: [],
providers: [],
bootstrap: []
})
export class AppModule { }
If you’re migrating, use ngUpgrade to run both frameworks together.
3. Debugging the Error in Chrome DevTools
Step 1: Open DevTools Console
- Right-click on the page and select Inspect
- Go to the Console tab
- Look for
[$injector:modulerr]errors
Step 2: Identify the Missing Module
The error message will tell you which module is missing:
Error: [$injector:modulerr] Failed to instantiate module 'myApp' due to:
Error: [$injector:nomod] Module 'myDependency' is not available!
➡ Fix: Ensure myDependency.js is loaded before app.js.
Step 3: Check Network Requests
- Go to the Network tab in Chrome DevTools
- Look for 404 errors on missing module files
Step 4: Use angular.module('myApp') in the Console
Run this in the browser console to check if the module exists:
angular.module('myApp');
If it throws an error, the module is not loaded correctly.
