如何避免或跳过Angular.js中的模块加载错误?

时间:2013-11-12 08:18:13

标签: javascript angularjs

// 的index.html
< html ng-app =“app”>

// app.js
angular.module('app','test-module')

如果我没有在下面的任何脚本中注册测试模块:
angular.module('test-module',[])

我将在浏览器中收到以下错误,整个网站将无法加载
未捕获错误:[$ injector:modulerr]由于以下原因无法实例化模块应用:
错误:[$ injector:modulerr]由于以下原因无法实例化模块测试模块:
错误:[$ injector:nomod]模块'test-module'不可用!您要么错误拼写了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。


问:如果有任何未知模块加载错误,如何确保加载网页?

2 个答案:

答案 0 :(得分:0)

我认为你应该从另一方面看待这个问题。

如果您在开发过程中使用测试模块(模块进行测试)。您可以将后端配置为在多个环境中工作。例如 dev 测试 prod 。您可以处理子域并决定后端需要加载哪些模块。 dev.yourdomain.com (适用于开发环境), yourdomain.com (适用于生产环境)和 test.yourdomain.com (适用于品尝)

您可以生成此类脚本:

<script type="text/javascript">
    var MyModules = ['test-module'];
</script>

并处理它:

angular.module.apply(angular, 'app', MyModules);

答案 1 :(得分:0)

我找到了解答你的答案:)

Angular对每个模块都有一系列要求,因此如果你想使用这个模块,你可以轻松推送一些要求。

在你的情况下,你可以这样做

//index.html
<html ng-app="app">

//app.js
angular.module('app', [])

//test-module.js
angular.module('test-module', [])
angular.module('app').requires.push('test-module');

因此,如果您将test-module.js加载到浏览器,则会自动将依赖项注入您的应用程序。