Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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 RequireJS+;角度:未定义的应用程序。回调不';t射击_Javascript_Angularjs_Module_Requirejs_Amd - Fatal编程技术网

Javascript RequireJS+;角度:未定义的应用程序。回调不';t射击

Javascript RequireJS+;角度:未定义的应用程序。回调不';t射击,javascript,angularjs,module,requirejs,amd,Javascript,Angularjs,Module,Requirejs,Amd,我通过以下简单代码获得main.js: 'use strickt'; require.config({ paths: { 'angular' : 'libs/angular' , 'angular-router' : 'libs/angular-route' , }, shim : { 'angular' : { exports : 'angular' }, 'angular-router'

我通过以下简单代码获得main.js:

'use strickt';

require.config({

  paths: {
    'angular'        : 'libs/angular'          ,
    'angular-router' : 'libs/angular-route'    ,
  },
  shim : {
    'angular' : {
      exports : 'angular'
    },
    'angular-router' : {
      deps: ['angular']
    }
  }

});

require(['app'], function (mainApp) {
  console.log(mainApp);
});
正如您所看到的,我尝试在请求回调中获取应用程序。但我得到的只是它的未定义。 下面是我在app.js文件中得到的内容:

define('mainApp', ['angular', 'angular-route'], function (angular) {
  var app = angular.module('mainApp', ['ngRoute']);
  console.log('should be fired from app.js');
  return app;
});
因此,问题是:
函数参数“mainApp”在main.js回调中未定义似乎合乎逻辑,因为app.js中的console.log()不起作用。有人能告诉我它有什么问题吗?

只需删除app.js文件中的模块名(或将其更改为“app”)。您的app.js文件如下所示:

define(['angular', 'angular-route'], function (angular) {
  var app = angular.module('mainApp', ['ngRoute']);
  console.log('should be fired from app.js');
  return app;
});

您可以自己显式地命名模块,但它使模块 可移植性较差--如果将文件移动到另一个目录,则 需要更改名称。通常最好避免在名称中编码 对于模块,只需让优化工具在模块中运行即可 名字。优化工具需要添加名称,以便 一个模块可以捆绑在一个文件中,以便更快地加载 浏览器


你不应该改为在main.js中使用(['angular','app'],function(mainApp){…})吗?为什么?Angular包含为全局抛出垫片,并在app.js中作为参数传递。所以它不应该在requirecallback中未定义。也许我真的不明白你的问题。如果是这样,请纠正我。