define()中的所有模块都是未定义的

时间:2014-03-05 04:53:04

标签: ruby-on-rails-4 requirejs requirejs-rails

我使用requirejs-rails来管理Rails 4项目中客户端模块之间的依赖关系。

我的切入点是:

(function (define, undefined) {
'use strict';

var mainModule = function(angular, routingConfiguration, controllers) {
    var restaurantsApp = angular.module('RestaurantsApplication', ['ui.router'])
    .config(routingConfiguration);

angular.forEach(controllers, function(controller, name){
  restaurantsApp.controller(name, controller);
  });
};

define(['angular', 'application/routing-configuration',
     'controllers', 'angular-ui-router'], 
     mainModule );
})(window.define);

但是在define函数中“注入”的每个模块都是未定义的。 我的意思是,如果我在内部定义函数

console.log(arguments)

我收到了

[undefined, undefined, undefined, undefined]

我想,在某个地方我有循环引用,所以我删除了除了angular

之外的所有模块
(function (define, undefined) {
'use strict';

var mainModule = function(angular) {
    var restaurantsApp = angular.module('RestaurantsApplication', []);
};

define(['angular'], 
     mainModule );
})(window.define);

但我得到相同的结果:角度未定义。

更新

requirejs.yml

paths:
  "angular"           : "angular"
  "angular-ui-router" : "angular-ui-router.min"

modules:
  - name: 'entry-point'

1 个答案:

答案 0 :(得分:0)

似乎,我发现,出了什么问题。 Angular并不支持AMD。

我在requierjs.yml中配置了 shim ,如下所示

shim:
  "angular" :
    exports : "angular"

  "angular-ui-router":
    exports : "angular-ui-router"
    deps : "angular"

而且,呜呜!它正在运作!