【问题标题】:Module is not available, misspelled or forgot to load (but I didn't)模块不可用、拼写错误或忘记加载(但我没有)
【发布时间】:2015-10-02 09:29:03
【问题描述】:

我对 Angular 相当陌生,并且将它与 JSON api 文件一起使用。为了测试,我正在尝试使用免费的 github api(我的函数名称是用于稍后我将使用的不同的 json api)。我只是想看看我的函数是否与console.log() 一起工作,但我在控制台中收到此错误。

未捕获的错误:[$injector:modulerr] 无法实例化模块 MesaViewer 由于:错误:[$injector:nomod] 模块“MesaViewer”不是 可用的!您要么拼错了模块名称,要么忘记加载它。 如果注册模块,请确保将依赖项指定为 第二个参数。

我把MesaViewer在两者中的拼写完全一样,并且在第二行中可以看到依赖关系!

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

我做错了什么? 这是我的笨拙:http://plnkr.co/edit/sZPaFbzbOB6AmVCLL1vq

【问题讨论】:

  • 作为语法的一部分,[] 是强制性的。它用于将依赖项添加到您的应用程序中,例如其他模块。喜欢['yourModuleName', 'anotherModule']。即使您不依赖其他模块,您仍然必须包含空白数组 []

标签: javascript json angularjs module angularjs-injector


【解决方案1】:

当我的服务声明位于非调用函数 (IIFE) 中时,我收到此错误。下面的最后一行没有额外的 () 来运行和定义服务。

(function() {
    "use strict";

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

    function reviewService($http, $q, $log) {
        //
    }
}());

【讨论】:

  • 有人给这家伙一枚奖章。谢谢托德。
  • 谢谢,我是 AngularJS 的新手,但我确信我已经正确地声明了这个模块,这让我发疯了。这就是解药!
【解决方案2】:

确保首先在 index.html 中插入模块和控制器。 然后在您的模块中使用此代码var app = angular.module("MesaViewer", []);

【讨论】:

    【解决方案3】:

    使用AngularJS1.6.9+

    还有一种情况,当你声明变量名与模块名不同时也会发生这种情况。

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

    为了摆脱这个错误,

    错误:[$injector:nomod] 模块“indexPageApp”不可用!你 要么拼错了模块名称,要么忘记加载它。如果注册 一个模块确保您将依赖项指定为第二个 论据。

    将模块名称更改为类似于 var 声明的名称,反之亦然 -

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

    【讨论】:

      【解决方案4】:

      当我出于不同的原因遇到相同的错误时,我发现了这个问题。

      我的问题是我的 Gulp 没有意识到我已经声明了一个新模块并且我需要手动重新运行 Gulp。

      【讨论】:

        【解决方案5】:

        我遇到了同样的错误并修复了它。 事实证明这是一个愚蠢的理由。

        这是罪魁祸首:<script src="app.js"/>

        修复:<script src="app.js"></script>

        确保你的脚本标签正确结束!

        【讨论】:

        • 对我来说可能更傻!我不小心将 src 输入为“/js/app.js”,而我真正想要的是没有初始斜线的“js/app.js”。这意味着它可以在一个开发环境中工作,但不能在另一个开发环境中工作!
        【解决方案6】:

        我遇到了同样的错误,但我解决了,这是 AngularJS 提供程序中的语法错误

        【讨论】:

          【解决方案7】:

          我有同样的问题,但我解决了在 angular.min.js 之前添加 jquery.min.js。

          【讨论】:

            【解决方案8】:

            应该是

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

            这是定义模块所需的语法,并且需要数组显示它没有依赖关系。

            你使用

            angular.module("MesaViewer");
            

            引用已定义模块时的语法。

            【讨论】:

            • 并确保如果您的 HTML 中引用了多个 js 文件,则首先加载定义模块的那个,否则您仍然会收到“nomod”错误,即使您有宣布它。
            【解决方案9】:

            你的主模块声明不正确,创建模块时需要第二个依赖数组参数,否则它是对现有模块的引用

            变化:

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

            收件人:

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

            Working Version

            【讨论】:

              猜你喜欢
              • 2016-09-27
              • 1970-01-01
              • 2014-12-06
              • 1970-01-01
              • 2017-09-26
              • 2016-07-21
              • 2017-06-29
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多