回调方法中未定义RequireJS依赖项
RequireJS dependency undefined in callback method
我开始使用RequireJS
,依赖项加载良好,但在回调方法中,所有依赖项都是undefined
。
require.config({
baseUrl: 'js',
paths: {
angular: '../lib/angular/angular',
myApp: 'app',
states: 'app-states',
controllers: 'controllers',
filters: 'filters',
services: 'services',
oauth2: 'oauth2'
//async: 'lib/require/async'
},
shim: {
'myApp': {
deps: ['angular']
},
'states' : {
deps: ['angular', 'myApp']
},
'controllers': {
deps: ['angular', 'myApp']
},
'filters': {
deps: ['angular', 'myApp']
},
'services': {
deps: ['angular', 'myApp']
}
}
});
require(['angular', 'myApp', 'states', 'controllers', 'filters', 'services'], function(angular, myApp, states, controllers, filters, services) {
'use strict';
console.log('requireJs done');
console.log(angular);
console.log(myApp);
angular.bootstrap(document, ['myapp']);
});
如果我只需要angular
,则不会调用回调方法。我想知道为什么。
require(['angular', function(angular) {
console.log("requireJS done");
}]);
您不会从这些库导出任何值。对于垫片,您需要指定要导出的变量,然后才能引用它们。由于您没有导出任何内容,因此变量被设置为null。
导出如下所示:
shim: {
"angular": {
exports: "angular"
}
}
AMD/Requirejs的工作原理是从加载的文件中提取一个值,并将其设置为回调函数中的命名参数。对于普通的AMD文件,不管传递给define的函数的返回值是什么,或者define中的对象是什么。但是对于垫片,您需要选择一个变量,通常是库的名称空间。这允许您为基于名称空间的库模拟AMD
有关更多详细信息,请参阅有关垫片的文档部分。
您的语法错误,依赖项数组应该是第一个参数。
尝试
require(['angular'], function(angular) {
console.log("requireJS done");
});
我不得不导出一些库,以便在回调中可用。
shim: {
'angular': {
exports: 'angular'
}
}
相关文章:
- requirejs定义:嵌套依赖关系
- requirejs+bower,bower组件中的路径和依赖关系
- Loader requireJs没有'不尊重依赖关系
- AngularJS'依赖注入和RequireJS本质上是相同的
- 模拟requireJS的内部依赖关系
- RequireJS,循环依赖和导出“魔术”方法
- 使用 requireJs 的模块中的循环依赖关系
- 如何使用requirejs保证javascript中的依赖类
- RequireJS:如何处理传递依赖项失败
- 获取依赖项以在requirejs(autobahn和whenjs)中正确加载
- RequireJS:如何处理浏览器和服务器之间共享的代码的不同模块依赖关系
- Requirejs 优化器 - 包括某些文件和文件夹的嵌套依赖项
- 如何使 requirejs 填充模块能够访问未定义的依赖项
- Requirejs 忽略可选依赖项的加载错误
- 节点中的 RequireJS 因使用插件的依赖项(例如使用.js)而失败
- RequireJS - 先初始化一个依赖模块,然后再加载其他模块
- requireJS:缩短依赖关系列表
- RequireJS不一致地加载依赖项
- RequireJS和依赖于按特定顺序加载的脚本
- requireJS中的填充依赖关系:速记与长手记法