64

I am fairly new to angular and using it with JSON api files. TO test, I am trying to use the free github api (my names for functions are for a different json api that i will be working with later). I just wanted to see if my functions were working with console.log(), but i receive this error in the console.

Uncaught Error: [$injector:modulerr] Failed to instantiate module MesaViewer due to: Error: [$injector:nomod] Module 'MesaViewer' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

I have spelled MesaViewer the exact same in both, and dependencies are seen in the second line!

var app = angular.module("MesaViewer");
var MainController = function($scope, $location, $http, $routeParams) {

What did I do wrong? Here is my plunk: http://plnkr.co/edit/sZPaFbzbOB6AmVCLL1vq

Cœur
  • 37,241
  • 25
  • 195
  • 267
  • 5
    as a part of the syntax, `[]` is mandatory. It is used to add dependencies in to your app, e.g., other modules. like `['yourModuleName', 'anotherModule']`. You still got to include the blank array, `[]` even if you have no dependencies on other modules. – Sudhansu Choudhary Jul 13 '15 at 23:12

9 Answers9

100

It should be

var app = angular.module("MesaViewer", []);

This is the syntax you need to define a module and you need the array to show it has no dependencies.

You use the

angular.module("MesaViewer");

syntax when you are referencing a module you've already defined.

Matt Herbstritt
  • 4,754
  • 4
  • 25
  • 31
  • 1
    And make sure that if you have multiple js files referenced in your HTML, that the one where the module is defined is loaded first, or you will still get a "nomod" error, even if you have declared it. – Yvonne Aburrow Sep 26 '16 at 13:44
15

You are improperly declaring your main module, it requires a second dependencies array argument when creating a module, otherwise it is a reference to an existing module

Change:

var app = angular.module("MesaViewer");

To:

var app = angular.module("MesaViewer",[]);

Working Version

charlietfl
  • 170,828
  • 13
  • 121
  • 150
11

I had the same error and fixed it. It turned out to be a silly reason.

This was the culprit: <script src="app.js"/>

Fix: <script src="app.js"></script>

Make sure your script tag is ended properly!

Sruthi Poddutur
  • 1,371
  • 13
  • 7
  • Possibly even sillier for me! I had accidentally typed the src as "/js/app.js", when what I really wanted was "js/app.js" without the initial slash. That meant it worked in one development environment but not another! – kqr Feb 17 '18 at 08:55
7

I found this question when I got the same error for a different reason.

My issue was that my Gulp hadn't picked up on the fact that I had declared a new module and I needed to manually re-run Gulp.

Slicedbread
  • 2,208
  • 3
  • 21
  • 28
5

I got this error when my service declaration was inside a non-invoked function (IIFE). The last line below did NOT have the extra () to run and define the service.

(function() {
    "use strict";

    angular.module("reviewService", [])
        .service("reviewService", reviewService);

    function reviewService($http, $q, $log) {
        //
    }
}());
Todd Hale
  • 480
  • 8
  • 15
4

I have the same problem, but I resolved adding jquery.min.js before angular.min.js.

Roberth Godoy
  • 41
  • 1
  • 4
4

make sure that you insert your module and controller in your index.html first. then use this code in your module var app = angular.module("MesaViewer", []);

sandeep kumar
  • 124
  • 1
  • 4
2

Using AngularJS 1.6.9+

There is one more incident, it also happen when you declare variable name different of module name.

var indexPageApp = angular.module('indexApp', []);

to get rid of this error,

Error: [$injector:nomod] Module 'indexPageApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

change the module name similar to var declared name or vice versa -

var indexPageApp = angular.module('indexPageApp', []);
ArifMustafa
  • 4,617
  • 5
  • 40
  • 48
1

I had the same error but i resolved it, it was a syntax error in the AngularJS provider

noushad mohammed
  • 375
  • 1
  • 4
  • 20