Angular - 模块' {0}'不可用!文件夹名称导致的错误

时间:2016-07-02 12:44:54

标签: angularjs coffeescript

加载Angular模块遇到了一个奇怪的问题。

我有一个像这样的文件结构

-ng-app
    -app
        -account
            accountCtrl.js.coffee
        -auth
            authCtrl.js.coffee
        -other_folders
        app.js.coffee

我正在加载accountCtrl和其他类似的控制器

#app/app.js.coffee
angular.module("app", [
    'ngResource' 
    'smart-table'
    'checklist-model'
    'ui.router'
    ...
])

#app/account/accountCtrl.js.coffee
@app = angular.module('app')
app.controller 'accountCtrl', ($scope, $state) ->
   ....

#app/auth/authCtrl.js.coffee
@app = angular.module('app')
app.controller 'authCtrl', ($scope, $state) ->
   ....

但是,accountCtrl会抛出错误

  

模块' app'不可用!您要么错误拼写了模块名称   或者忘了加载它。如果注册模块,请确保指定   依赖关系作为第二个参数。

我知道语法是正确的,因为我正在使用相同的语法加载几十个其他控制器。所以我开始玩不同的场景。

  1. 我删除了'帐户'夹

      

    没有抛出错误,其他控制器正常加载

  2. 我将帐户文件夹重命名为z-account

      

    没有抛出任何错误,包括accountCtrl在内的所有控制器都正常加载

  3. 因此,只有在文件夹命名为' account'并且是' app'中的第一个文件。夹。有什么想法会发生什么?

1 个答案:

答案 0 :(得分:0)

Rails资产管道包括javascript文件,并且app / account.js.coffee被包含在app / app.js.coffee之前,因此缺少模块错误。

可能的两种解决方案:

  1. 带有下划线的前缀文件,以确保首先加载:

    _app.js.coffee 
    
  2. 或者

    1. 删除

       //= require_tree .
      
    2. 在application.js中

      并手动包含文件。