ZURB Foundation for Apps[$injector:modulerr]添加模块时出错

ZURB Foundation for Apps [$injector:modulerr] error when adding modules

本文关键字:modulerr 添加 模块 出错 injector for Foundation Apps ZURB      更新时间:2023-09-26

我正在进行一个具有特定身份验证的项目,该项目已经在Ionic中运行。我必须为只适用于web设备的管理面板实现同样的功能,所以我已经安装了所有的依赖项,配置了应用程序,并在ZURB Foundation for Apps 1.1中完成了HTML/CSS的工作。现在我被困在控制器和服务的实现上。

我阅读了官方文档,对自定义控制器和服务没有太多解释,所以我在网上几乎没有找到解释应用程序基础结构的文本。我还发现了一个结构如下的示例应用程序:在ZURB FOUNDATION FOR APPS中组织角度文件,并从这里复制了每个页面的示例文件:FOUNDATION FOR APPS Template

因此,我将About、Contact、Home和Shared文件夹放在assets/js中。

因此,例如Shared文件夹包含controllers.js文件,该文件的代码如下:

   (function () {
    'use strict';
    var controllers;
    AppCtrl.$inject = ['$scope'];
    function AppCtrl($scope) {
        // This is a shared controller because its the application parent controller
    }
    controllers = {
        AppCtrl: AppCtrl
    };
    angular.module('SharedModule').controller(controllers);
})

module.js文件包含以下内容:

(function () {
    'use strict';
  angular.module('SharedModule', [ /* Dependencies to be shared everywhere */ ]);
})

app.js文件的代码与生成的文件几乎相同,只是指定了自定义模块:

(function() {
  'use strict';
  angular.module('application', [
    'ui.router',
    'ngAnimate',
    //foundation
    'foundation',
    'foundation.dynamicRouting',
    'foundation.dynamicRouting.animations',
    // My modules
    'SharedModule',
    'ContactModule',
    'AboutModule',
    'HomeModule'
  ])
    .config(config)
    .run(run)
  ;
  config.$inject = ['$urlRouterProvider', '$locationProvider'];
  function config($urlProvider, $locationProvider) {
    $urlProvider.otherwise('/');
    $locationProvider.html5Mode({
      enabled:false,
      requireBase: false
    });
    $locationProvider.hashPrefix('!');
  }
  function run() {
    FastClick.attach(document.body);
  }
})();

所以现在,当我运行应用程序时,我会得到以下错误:

未捕获错误:[$injector:moduler]未能实例化模块应用程序由于:错误:[$injector:moduler]未能实例化模块HomeModule由于:错误:[$injector:nomod]模块"HomeModule"不可用!您要么拼错了模块名称,要么忘记了加载它。如果注册模块,请确保指定依赖关系作为第二个参数。

任何帮助都将不胜感激,谢谢。

我解决了这个问题。

我试图逐个删除模块,以测试各个模块是否存在问题,但出现了相同的错误,所以我也检查了各个文件,但这些文件看起来与示例应用程序中的相同。然后,我检查了是否调用了依赖项,但由于它们不像在常规AngularJS应用程序中那样在索引文件中调用,所以我比较了gullfile.js并给出了解决方案:在appJS数组中,我必须包含.js文件的路径,所以gullfile.js的一部分现在看起来是这样的:

  appJS: [
    'client/assets/js/app.js',
    // Load my modules
    'client/assets/js/*/module.js',
    'client/assets/js/*/controllers.js',
    'client/assets/js/*/factories.js',
    'client/assets/js/*/services.js',
    'client/assets/js/*/directives.js'
  ]