我在 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>
问题是有时运行,有时不运行。 不运行时的错误是
Uncaught Error: No module: MyApp
如果有任何想法,我将不胜感激。 非常感谢。
最佳答案
在您的 shim 中,您需要将 app
设置为对 angular-boot
的依赖。你的angular-boot
文件依赖于app
(定义MyApp
的地方),由于这两个文件的加载顺序没有指定,所以有时候angular-boot
在 app
之前加载,因此会产生该错误。
要补救,只需像这样更新您的 shim:
shim: {
angular: {
deps: [ 'jquery' ],
exports: 'angular'
},
'angular-boot': {
deps: ['app']
}
}
而且,由于您不需要显式包含“app”,您的 require
调用可以简化为:
require(['angular-boot']);
关于javascript - Uncaught Error : No module: MyApp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16585085/