Javascript 未捕获错误:无模块:MyApp
我在nodeJs框架中使用RequireJs加载AngularJs和jQuery 这就是main.jsJavascript 未捕获错误:无模块:MyApp,javascript,angularjs,playframework,requirejs,Javascript,Angularjs,Playframework,Requirejs,我在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/d
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
如果有任何想法,我会非常感激。
非常感谢。在垫片中,您需要将
应用程序设置为角启动的依赖项。您的angular boot
文件取决于app
(其中定义了MyApp
),并且由于未指定这两个文件的加载顺序,因此有时angular boot
会在app
之前加载,从而产生该错误
要进行补救,只需更新垫片,如下所示:
shim: {
angular: {
deps: [ 'jquery' ],
exports: 'angular'
},
'angular-boot': {
deps: ['app']
}
}
此外,由于您不需要明确包含“应用程序”,因此您的require
呼叫可以减少为:
require(['angular-boot']);
不幸的是,这对我没有帮助。你还可以尝试什么其他选择?@martinix如果这个答案对你没有帮助,那就意味着你有不同的问题。你可能想创建一个单独的问题,引用这个问题。重要的是要注意,你必须使用一个垫片,而不是简单地添加“app”作为requirejs依赖项。垫片指定的加载顺序(或至少允许您进行更多的控制)超过了所需的功能。