在回调方法中未定义RequireJS依赖项

悉尼

我开始使用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

您可以参阅垫片文档部分以了解更多详细信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我在d3中收到“回调未定义错误”

测试具有RequireJS依赖项的es6模块时,在Jest中“未定义定义”

Leaflet-marker click事件工作正常,但在回调函数中未定义类的方法

在回调函数中未定义MongooseJS对象

环回4:@repository依赖项注入失败(TypeError:无法读取未定义的属性'findOne')

最终回调中的axios响应对象未定义

返回方法仅显示未定义。如何获得回调?

TS-回调中未定义类方法

在回调中未定义注入器服务

未定义的方法'-'用于nil:NilClass用于现有字段的活动记录回调

在代码拆分时未定义Requirejs回调

为什么回调未定义?

未定义requirejs匿名依赖关系

RequireJS + Angular:未定义的应用程序。回调不发声

在dropzone.js成功回调中获取“文件:未定义”

'this'在指令的回调中未定义

在async.waterfall方法中未定义的回调

流星集合findOne在回调中返回时未定义

处理require.js中未定义的依赖项

TypeError:this._url在Dojo FilteringSelect onChange回调中未定义

ES6 + Angular Controller类,在回调中未定义此类

局部变量在javascript的回调函数中变为未定义

Karma 回调始终未定义

迭代全局对象的键尝试在异步回调中访问未定义的变量

节点js中的“回调未定义”

“this”在wepay回调关闭器中返回未定义

$.getJSON 回调函数未定义

在跨域ajax帖子的回调函数中未定义

vue.js 导入的模块在 promise 回调中未定义