【问题标题】:Uncaught Error: No module: MyApp未捕获的错误:没有模块:MyApp
【发布时间】:2013-05-16 10:32:27
【问题描述】:

我在 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>

问题是有时运行,有时不运行。 不运行时的错误是

未捕获的错误:没有模块:MyApp

如果有任何想法,我将不胜感激。 非常感谢。

【问题讨论】:

    标签: javascript angularjs playframework requirejs


    【解决方案1】:

    在您的 shim 中,您需要将 app 设置为 angular-boot 的依赖项。您的angular-boot 文件取决于app(其中定义了MyApp),并且由于未指定这两个文件的加载顺序,有时angular-bootapp 之前加载,从而产生该错误。

    要补救,只需更新您的 shim 即可:

    shim: {
      angular: {
        deps: [ 'jquery' ],
        exports: 'angular'
      },
      'angular-boot': {
        deps: ['app']
      }
    }
    

    而且,由于您不需要明确包含“应用程序”,因此您的 require 调用可以简化为:

    require(['angular-boot']);
    

    【讨论】:

    • 不幸的是,它对我没有帮助。您还可以尝试哪些其他选择?
    • @martinixs 如果这个答案对你没有帮助,那就意味着你有一个不同的问题。您可能想创建一个单独的问题,引用这个问题。
    • 需要注意的是,您必须使用 shim 而不是简单地将“app”添加为 requirejs 依赖项。垫片指定加载顺序(或至少允许您进行更多控制)而不是所需功能。
    猜你喜欢
    • 2018-11-28
    • 2014-09-05
    • 1970-01-01
    • 2017-02-17
    • 2014-12-25
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多