作者:mobiledu2502926167 | 来源:互联网 | 2023-02-10 20:21
我遇到了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());
}
});
事实是,通常我能够用sub1和
sub2做到这一点,但是,对于子模块,我根本不能.我认为这是由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'
这很奇怪,因为我能够在其他情况下这样做,我真的不明白为什么会这样.例如,我能够从主文件和其他文件调用sub1和sub2函数,但不能特别调用子模块.
的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,试图复制应用程序的结构,但所有模块在点击时都是未定义的.在实际应用中,这不会发生.
我怎么解决这个问题?