Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获错误:无模块:MyApp_Javascript_Angularjs_Playframework_Requirejs - Fatal编程技术网

Javascript 未捕获错误:无模块:MyApp

Javascript 未捕获错误:无模块:MyApp,javascript,angularjs,playframework,requirejs,Javascript,Angularjs,Playframework,Requirejs,我在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/d

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

如果有任何想法,我会非常感激。
非常感谢。

在垫片中,您需要将
应用程序设置为
角启动的依赖项。您的
angular boot
文件取决于
app
(其中定义了
MyApp
),并且由于未指定这两个文件的加载顺序,因此有时
angular boot
会在
app
之前加载,从而产生该错误

要进行补救,只需更新垫片,如下所示:

shim: {
  angular: {
    deps: [ 'jquery' ],
    exports: 'angular'
  },
  'angular-boot': {
    deps: ['app']
  }
}
此外,由于您不需要明确包含“应用程序”,因此您的
require
呼叫可以减少为:

require(['angular-boot']);

不幸的是,这对我没有帮助。你还可以尝试什么其他选择?@martinix如果这个答案对你没有帮助,那就意味着你有不同的问题。你可能想创建一个单独的问题,引用这个问题。重要的是要注意,你必须使用一个垫片,而不是简单地添加“app”作为requirejs依赖项。垫片指定的加载顺序(或至少允许您进行更多的控制)超过了所需的功能。