您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

RequireJS中的动态require,是否出现“尚未为上下文加载模块名称”错误?

RequireJS中的动态require,是否出现“尚未为上下文加载模块名称”错误?

该限制与简化的CommonJS语法和常规回调语法有关:

由于下载模块的时间未知,因此加载模块本质上是一个异步过程。但是,在服务器端CommonJS规范的仿真中,RequireJS试图为您提供简化的语法。当您执行以下操作时:

var foomodule = require('foo');
// do something with fooModule

幕后发生的事情是RequireJS正在查看函数代码的主体,并解析出您需要’foo’并在函数执行之前加载它。但是,当变量或除简单字符串以外的任何内容(例如您的示例)…

var module = require(path); // Call RequireJS require

…然后Require无法解析出来并自动将其转换。解决方案是将转换为回调语法。

var moduleName = 'foo';
require([moduleName], function(fooModule){
    // do something with fooModule
})

鉴于以上所述,这是您的第二个示例可能的重写,以使用标准语法:

define(['dyn_modules'], function (dynModules) {
    require(dynModules, function(){
        // use arguments since you don't kNow how many modules you're getting in the callback
        for (var i = 0; i < arguments.length; i++){
            var mymodule = arguments[i];
            // do something with mymodule...
        }
    });

});

编辑:从您自己的答案,我看到您正在使用下划线/破折号,因此使用_.values_.object可以简化上述遍历参数数组的循环。

其他 2022/1/1 18:21:10 有584人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶