我正在尝试将require.js与Main.js一起使用并收到以下错误:
未捕捉错误:[$ injector:modulerr] http://errors.angularjs.org/1.2.0rc1/ $ injector / modulerr?p0 = MyApp& p1 =错误%3 ... 3A8080%2FResults%2Fresources%2Fjs%2Fvendor%2Fangular.min.js%3A31% 3A252)
My Main.js
require.config({
// alias libraries paths
paths: {
'angular': 'vendor/angular.min',
'jquery': 'vendor/jquery-1.8.0-min',
'angularroute': 'vendor/angular-route'
},
// angular does not support AMD out of the box, put it in a shim
shim: {
'angular': {
deps: ['jquery'],
exports: 'angular'
},
'angularroute':{
deps:['angular']
}
}
});
require([
'angular',
'angularroute',
'app'
],
function(angular, angularroute, app){
'use strict';
})
我的app.js
define(['angular'], function(angular){
return angular.module('MyApp',['ngRoute']);
});
我收到一条错误,说我需要将angularroute添加到我的应用中,但我仍然会收到此错误。谁能指出我可能做错了什么?
答案 0 :(得分:6)
我在这里找到了一个解决方案:https://github.com/tnajdek/angular-requirejs-seed/blob/master/app/js/main.js
来自文档: http://code.angularjs.org/1.2.1/docs/guide/bootstrap#overview_deferred-bootstrap
window.name = "NG_DEFER_BOOTSTRAP!";
require(['angular', 'angularroute', 'app'], function(angular, angularroute, app){
'use strict';
//after you are done defining / augmenting 'MyApp' run this:
angular.element().ready(function() {
angular.resumeBootstrap([app['name']]);
});
})
答案 1 :(得分:5)
这是我的require配置,位于require_config.js
:
var require = {
baseUrl: '/js',
paths: {
'angular': 'lib/angular.min',
'angular.route': 'lib/angular-route.min',
'angular.resource': 'lib/angular-resource.min',
'angular.animate': 'lib/angular-animate.min',
'angular.ui.bootstrap': 'lib/ui-bootstrap-tpls-0.6.0.min',
'angular.upload': 'lib/ng-upload.min',
'jquery': 'lib/jquery-1.10.2.min'
},
shim: {
'angular': ['jquery'],
'angular.route': ['angular'],
'angular.resource': ['angular'],
'angular.animate': ['angular'],
'angular.ui.bootstrap': ['angular'],
'angular.upload': ['angular'],
'my.angular': ['angular', 'angular.route', 'angular.resource', 'angular.animate', 'angular.ui.bootstrap', 'angular.upload']
}
};
我在HTML script
的{{1}}代码:
<head>
来自服务器端的页面可以使用Angular或jQuery,两者都没有...因此,HTML标记可能包含一个简单的标记,最终激活整个Angular结构,如下所示: / p>
<script src="/js/require-config.js"></script>
<script src="/js/lib/require.js"></script>
现在,在<script>require(['myApp']);</script>
,我只依赖 my.angular ,它负责加载其他所有内容......事实上,我还有其他的“my.angular”风格,使用不同的子集,我在网站的不同上下文中使用:
myApp.js
答案 2 :(得分:3)
angular
被定义为全局变量,您的声明将覆盖它。文件angular.js
不会返回任何内容,因此在RequireJS级别没有任何内容可以注入。请尝试以下方法:
define(['angular'], function(){
return angular.module('MyApp',['ngRoute']);
});
我在与RequireJS和AngularJS挣扎,所以我创建了angularAMD来帮助我:
http://marcoslin.github.io/angularAMD/
答案 3 :(得分:0)
您的设置看起来不错,但您需要在 app.js 文件的angularroute
部分中添加define
作为依赖项。您提到了这一点,但未在示例代码中反映出这一点。
define(['angular', 'angularroute'], function(angular){
return angular.module('MyApp',['ngRoute']);
});