Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS无法加载模块_Javascript_Html_Angularjs - Fatal编程技术网

Javascript AngularJS无法加载模块

Javascript AngularJS无法加载模块,javascript,html,angularjs,Javascript,Html,Angularjs,编辑:这只发生在IE上(在IE10上测试) 我有一个应用程序,最初可以正常加载,但刷新时会出现以下错误: var mod = angular.module("blah"); // <-- wrong SCRIPT5022:无模块:myAppModule myAppModule是在app.js中定义的angular模块,在加载angular.js后加载 angular.module('myAppModule', []); 并通过以下方式自动引导: <html ng-app="my

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

我有一个应用程序,最初可以正常加载,但刷新时会出现以下错误:

var mod = angular.module("blah");  // <-- wrong
SCRIPT5022:无模块:myAppModule

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

angular.module('myAppModule', []);
并通过以下方式自动引导:

<html ng-app="myAppModule">

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

window.jQuery||
文件。写入(“”)
窗角||
文件。写入(“”)

我估计angularjs会先加载,然后自动引导应用程序,但是app.js还没有加载

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

e、 g


...
引导(文档,['myAppModule']);

我也有同样的问题,只是在IE9中。IE的较低版本和较新的浏览器一样工作正常

手动引导解决了这个问题,但为属于我的模块的筛选器抛出了一个错误“未知提供程序”。请注意,过滤器似乎仍按预期运行

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


因此,如果我的模块名是
myAppModule
,那么文件名应该是
myAppModule.js
,而不是
myapp\u module.js
,当我发现自己做错了什么时,我觉得自己像个白痴,但如果你和我一样,那么首先要检查以下几点:

  • 确保先加载子模块。在我的例子中,我必须确保子模块在物理上先于父模块。您可以通过在每个模块初始化行上放置断点来确认这一点
  • 即使物理顺序正确,执行顺序仍然关闭。我的一个模块包装在一个自动执行函数中,而另一个没有。Doh
  • 子函数中存在错误,导致此错误在控制台中显示两次。这是因为我使用了如下语法:

    var mod = angular.module("blah", []);
    mod.filter("filterName", function(){ ... }); 
    
    有一次,我在启动模块时忘记了空括号,因此该行看起来像这样,并抛出了以下错误:

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

    var mod=angular.module(“blah”);// 顺便说一下,使用Angular 1.0.6,在Angular(硬编码脚本标记)之前加载jQuery会导致IE10抛出“无模块”错误


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

    我们只有在IE中遇到相同的问题。这是由键入错误引起的(某些cat一定踩到了键盘):

    
    
    type属性值中的前导空格是导致问题的原因。当它被删除后,应用程序再次正常运行

    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'
      })
    }])
    

    嗯,这很奇怪,AngularJS通常会在完全加载后启动boostraping模块。你能分享一些更多的信息吗:使用的浏览器,加载纸条的方法(一个简单的纸条标签或AMD)链接到应用程序,更多的代码等。一个plunk将是理想的。编辑。我相信AngularJS在app.js有机会加载之前已经完全加载了?这是可能的吗?出于好奇:你能试着用一个常规标记加载jquery和angular吗?是的,我试着在本地加载它们,而不是通过CDN,但仍然是一样的,所以这只发生在我部署到远程Web服务器时。。。在本地运行似乎很好,除了偶尔发生的情况。。。我再次计算了加载AngularJS和app.js之间的延迟,因此这是使用
    ng app
    ?是的。。。var myAppModule=angular.module(“myAppModule”,[]);myAppModule.controller(“purchaseController”,函数($scope){….})angular.bootstrap(文档,['myAppModule']);
    app.config(['$stateProvider', ($stateProvider) => {
      $stateProvider.state('login', {
        url: '/login',
        templateUrl: 'partials/login.html'
      }).state('dashboard', {
        url: '/dashboard',
        templateUrl: 'partials/dashboard.html'
      })
    }])
    
    app.config(['$stateProvider', function ($stateProvider) {
      $stateProvider.state('login', {
        url: '/login',
        templateUrl: 'partials/login.html'
      }).state('dashboard', {
        url: '/dashboard',
        templateUrl: 'partials/dashboard.html'
      })
    }])