我在nodeJs框架中使用RequireJs加载AngularJs和jQuery。
那是main.js
require.config({
paths: {
angular: 'vendor/angular.min',
bootstrap: 'vendor/twitter/bootstrap',
jquery: 'vendor/jquery-1.9.0.min',
domReady: 'vendor/require/domReady',
underscore: 'vendor/underscore.min'
},
shim: {
angular: {
deps: [ 'jquery' ],
exports: 'angular'
}
}
});
require([
'app',
'angular-boot'
], function() {
});
app.js中的
define(['angular'], function (angular) {
return angular.module('MyApp', []);
})
并在angular-boot.js中
define([ 'angular', 'domReady' ], function (angular, domReady) {
domReady(function() {
angular.bootstrap(document, ['MyApp']);
});
});
在我的html文件中,我只有这一行,以声明和使用requirejs。 不是ng-ap或其他任何东西。
<script data-main="js/main" src="js/require.js"></script>
问题在于有时候会跑,有时候不会。 不运行时的错误是
未捕获错误:无模块:MyApp
如果有任何想法,我会非常感激。 非常感谢你。
答案 0 :(得分:3)
在您的垫片中,您需要将app
设置为angular-boot
的依赖项。您的angular-boot
文件取决于app
(其中MyApp
已定义),并且由于未指定这两个文件的加载顺序,有时会angular-boot
加载app
因而产生了这个错误。
要解决问题,只需更新您的垫片:
shim: {
angular: {
deps: [ 'jquery' ],
exports: 'angular'
},
'angular-boot': {
deps: ['app']
}
}
而且,因为您不需要明确地包含'app',您的require
电话可以简化为:
require(['angular-boot']);