模块'angular'不可用

时间:2014-01-27 22:44:15

标签: javascript angularjs requirejs

我有一个在EC2上运行的演示站点,我推了一个版本的AngularJS应用程序,现在一切都好像坏了。我正在使用AngularJS 1.2和RequireJS 2.1。我有一个modules/main_prod.js文件。它看起来像这样:

(function (require) {
    "use strict";
    require.config({
        paths: {
            'jquery': '../js3p/jquery',
            'jquery-ui': '../js3p/jquery-ui',
            'jquery.ui.widget': '../js3p/jquery.ui.widget',
            'bootstrap': '../js3p/bootstrap',
            'angular': '../js3p/angular',
            'angular-sanitize': '../js3p/angular-sanitize',
            'ngUi': '../js3p/angular-ui',
            'ui.bootstrap': '../js3p/ui-bootstrap-tpls-0.6.0-SNAPSHOT',
            'ngCalendar': '../js3p/calendar',
            'angular-ui-router': '../js3p/angular-ui-router',
            'uikeypress': '../js3p/keypress',
            'dtPicker': '../js3p/bootstrap-datetimepicker.min',
            'fileUpload': '../js3p/jquery.fileupload',
            'fullcalendar': '../js3p/fullcalendar',
            'iframeTransport': '../js3p/jquery.iframe-transport',
            'lodash': '../js3p/lodash',
            'moment': '../js3p/moment',
            'restangular': '../js3p/restangular',
            'typeahead': '../js3p/typeahead'
        },
        shim: {
            'jquery': { deps: [] },
            'jquery-ui': { deps: ['jquery'] },
            'jquery.ui.widget': { deps: ['jquery'] },
            'bootstrap': { deps: ['jquery'] },
            'angular': { deps: ['jquery'], exports: 'angular' },
            'angular-sanitize': { deps: ['angular'] },
            'ngUi': { deps: ['angular'] },
            'ui.bootstrap': { deps: ['angular', 'ngUi'] },
            'ngCalendar': { deps: ['jquery', 'jquery-ui', 'fullcalendar', 'angular'] },
            'angular-ui-router': { deps: ['angular', 'ngUi'] },
            'uikeypress': { deps: ['angular', 'ngUi'] },
            'dtPicker': { deps: ['jquery', 'bootstrap', 'moment'] },
            'fileUpload': { deps: ['jquery', 'jquery-ui', 'bootstrap', 'iframeTransport'] },
            'fullcalendar': { deps: ['jquery', 'jquery-ui'] },
            'iframeTransport': { deps: ['jquery', 'jquery-ui'] },
            'lodash': { deps: [] },
            'moment': { deps: ['jquery'] },
            'restangular': { deps: ['angular', 'lodash'] },
            'typeahead': {deps: ['jquery', 'bootstrap'] }
        },
        priority: ['angular']
    });

    require(['angular',
             'angular-ui-router'],
        function (angular, routes) {
            require(['angular', 'app'], function (angular) {
                angular.bootstrap(document, ["app"]);
            });
        });
}(require));

当我加载页面时,我看到所有这些库都加载了。我甚至看到页面加载,它看起来像Angular的一半工作(我看到指令填写和诸如此类)。任何受ng-show属性约束的东西似乎都不起作用(显示何时应隐藏),但我在AngularJS中的重定向确实有效。每个页面加载都会将其放入控制台:

Error: [$injector:modulerr] Failed to instantiate module angular due to:
[$injector:nomod] Module 'angular' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
...

如果需要更多代码,请告诉我,我很乐意提供。我在这里完全失去了。

2 个答案:

答案 0 :(得分:1)

所以我来找到问题所在。我正在使用ngStart种子项目,当它进行部署构建时,它会更改index.html文件的顶部:

<!doctype html>
<!--(if target build)>
      <html ng-app="angular" manifest="project.manifest">
<!(endif)-->
<!--(if target local)> -->
<html xmlns="http://www.w3.org/1999/xhtml">
<!--<!(endif)-->
<head>

ng-app="angular"是错误消息的实际原因。我把它删除了,事情就像预期的那样。

答案 1 :(得分:0)

您不能以这种方式使用angular和requirejs。您需要使用Angular ADM