15

编辑:这只发生在 IE 上(在 IE10 上测试)

我有一个最初加载良好的应用程序,但是,当刷新时它会出现此错误:

SCRIPT5022:没有模块:myAppModule

myAppModule 是在 app.js 中定义的 Angular 模块,它在加载 angular.js 后加载

angular.module('myAppModule', []);

并通过以下方式自动引导:

<html ng-app="myAppModule">

脚本加载如下(无 AMD 加载程序):

<script>window.jQuery ||
    document.write('<script src="js/vendor/jquery-1.8.0.min.js"></script>')</script>
<script>window.angular ||
    document.write('<script src="js/vendor/angular-1.0.2.min.js"></script>')</script>

<script src="js/app.js"></script>
<script src="js/controller.js"></script>

我认为首先加载 angularjs 并自动引导应用程序,但 app.js 尚未加载

4

6 回答 6

18

好的,我不知道为什么自动引导失败,但是如果我手动引导应用程序,它可以正常工作。

例如

<html>

...

<script src="js/app.js"></script>
<script src="js/controller.js"></script>
<script>angular.bootstrap(document, ['myAppModule']);</script>
于 2012-10-20T14:17:42.037 回答
6

当我发现自己做错了什么时,我觉得自己像个白痴,但如果你像我一样,那么首先要检查其他一些事情:

  1. 确保首先加载子模块。就我而言,我必须确保子模块在物理上位于我的父模块之前。您可以通过在每个模块初始化行上放置一个断点来确认这一点。
  2. 即使有正确的物理订单,执行订单仍然关闭。我的一个模块被包裹在一个自动执行的函数中,而另一个没有。多哈。
  3. 子函数中存在错误,实际上导致此错误在控制台中显示两次。这是因为我使用这样的语法:

    var mod = angular.module("blah", []);
    mod.filter("filterName", function(){ ... }); 
    

    有一次我在启动模块时忘记了空括号,所以该行看起来像这样并抛出了这个错误:

    var mod = angular.module("blah");  // <-- wrong
    

回顾一下,确保子模块首先执行并且没有错误。

于 2013-06-08T21:25:49.710 回答
3

我遇到了同样的问题,只在 IE9 中。较低版本的 IE 实际上运行良好,较新的浏览器也是如此。

手动引导解决了这个问题,但是对于属于我的模块的过滤器抛出了一个错误“Unknown Provider”。请注意,过滤器似乎仍按预期运行。

最后,解决我的问题并完全停止抛出错误的解决方案是简单地将模块文件重命名为与模块相同。

因此,如果我的模块的名称是,myAppModule那么文件名应该是myAppModule.js而不是my_app_module.js.

于 2012-12-19T14:58:37.027 回答
1
app.config(['$stateProvider', ($stateProvider) => {
  $stateProvider.state('login', {
    url: '/login',
    templateUrl: 'partials/login.html'
  }).state('dashboard', {
    url: '/dashboard',
    templateUrl: 'partials/dashboard.html'
  })
}])

就我而言,Internet Explorer 不喜欢箭头功能。将这些更改为 function(){} 表示法解决了这个问题:

app.config(['$stateProvider', function ($stateProvider) {
  $stateProvider.state('login', {
    url: '/login',
    templateUrl: 'partials/login.html'
  }).state('dashboard', {
    url: '/dashboard',
    templateUrl: 'partials/dashboard.html'
  })
}])
于 2016-04-26T18:22:10.393 回答
0

顺便说一句,使用 Angular 1.0.6,在 Angular(硬编码脚本标签)之前加载 jQuery 会导致 IE10 抛出“no Module”错误。

我能找到纠正它的唯一选择是手动引导并确保在所有其他子模块引用(如 Barnabas 提到的)之后加载定义模块的 app.js。

于 2013-09-27T20:38:40.683 回答
0

我们只在 IE 中遇到了同样的问题。这是由拼写错误引起的(一定是某些猫踩到了键盘):

<script type=" text/javascript" src="assets/js/app.js"></script>

type-Attribute 值中的前导空格导致了问题。一旦它被删除,该应用程序再次运行良好。

于 2015-12-21T07:40:36.467 回答