热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RequireJS-无法访问外部模块功能

如何解决《RequireJS-无法访问外部模块功能》经验,求大佬解答?

我遇到了RequireJS的问题.从本质上讲,我无法访问另一个文件中另一个文件中定义的函数.

我需要这样做,因为我想导出一个给定的函数子集,如

define('submodule', [], function() {

    let myFunction1 = function(){ return "Hello"; }
    let myFunction2 = function(){ return " From"; }
    let myFunction3 = function(){ return " Submodule!"; }

    return {
             myFunction1 : myFunction1,
             myFunction2 : myFunction2,
             myFunction3 : myFunction3,
    };

});

并从另一个文件访问它们

define('main', ['config', 'sub1', 'sub2', 'submodule'],   
        function(config, sub1, sub2, submodule) {

  //Config
  alert(config.conf);

  //Submodule
  let callSubmodule = function() {
    alert(submodule.myFunction1() + 
          submodule.myFunction2() + 
          submodule.myFunction3());
  }

  //sub1
  let callSub1 = function() {
    alert(sub1.myFunction1());
  }

  //sub2
  let callSub2 = function() {
    alert(sub2.myFunction1());
  }

});

事实是,通常我能够用sub1sub2做到这一点,但是,对于子模块,我根本不能.我认为这是由require.config.js中的依赖项引起的.

我的require.config.js:

require(['common'], function () { //contains vendors
    require(['config'], function () { //contains a js config file
        require(['main'], function () { //main file
            require(['sub1', 'sub2'], function () { //some subfiles
                require(['submodule']);
            });
        });
    });
});

对于submodule.myFunction1()和我得到的两个相关函数:

未捕获(在承诺中)TypeError:无法读取未定义的属性'myFunction1'

这很奇怪,因为我能够在其他情况下这样做,我真的不明白为什么会这样.例如,我能够从主文件和其他文件调用sub1sub2函数,但不能特别调用子模块.

的index.html

//Taken from Plunker
. . .



. . .



common.js包含供应商,这里只是一个例子

requirejs.config({
   baseUrl : "",
    paths : {
             "jquery" : "http://code.jquery.com/jquery-latest.min.js"
    }
});

sub1.js

define('sub1', ['submodule'], function(submodule) {

    let myFunction1 = function(){ return "called sub1"; }

    return {
             myFunction1 : myFunction1
    };

});

sub2.js

define('sub2', ['submodule'], function(submodule) {

    let myFunction1 = function(){ return "called sub2"; }

    return {
             myFunction1 : myFunction1
    };

});

我设置了一个带有@SergGr帮助的Plunker,试图复制应用程序的结构,但所有模块在点击时都是未定义的.在实际应用中,这不会发生.

我怎么解决这个问题?


推荐阅读
author-avatar
mobiledu2502926167
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有