我有一个工作的AngularJS应用程序,并开始使用RequireJS进行模块依赖。遵循本指南 - http://www.startersquad.com/blog/angularjs-requirejs/ - 使用domReady插件手动引导角度应用。
在Chrome中测试并在控制台中获得 Uncaught object
。没有角度通常提供的通常细节,只有无用的调用堆栈。
这是我的应用的简化版本:
<html ng-app="myApp">
<body>
<script data-main="/scripts/config.js" src="scripts/require.js"></script>
</body>
</html>
config.js:
requirejs.config({
shim: { 'angular': { exports: 'angular' } },
deps: ['starting']
});
define(['require', 'angular', 'app'], function (require, angular) {
require(['domReady!'], function (document) {
angular.bootstrap(document, ['myApp']);
});
});
app.js:
define(['angular'], function (angular) {
var app = angular.module("myApp", []);
return app;
});
答案 0 :(得分:10)
实际上,在简化版中,错误更容易发现。问题在于模块的双重使用。第一次使用HTML(从RequireJS之前的时间开始):
<html ng-app="myApp">
在RequireJS完成加载文档后第二次在手动引导程序中:
angular.bootstrap(document, ['myApp']);
所以这是HTML的正确版本:
<html> <!-- Notice: removed ng-app -->
<body>
<script data-main="/scripts/config.js" src="scripts/require.js"></script>
</body>
</html>
此外,看到真正的AngularJS错误而不是Uncaught object
(由RequireJS打印,对异常有特殊处理),您可以捕获并显示如下:
require(['domReady!'], function (document) {
try {
// Wrap this call to try/catch
angular.bootstrap(document, ['materialApp']);
}
catch (e) {
console.error(e.stack || e.message || e);
}
});