Javascript 调用CommonJS模块时返回未定义
我是模块化JS的新手,以前从未使用过任何模式。我正在写一个项目,其中有400多行代码,我想通过在不同的模块中分离来更好地管理它。我选择使用commonJS模块,因为我已经使用了webpack。现在,我将我的第一个函数放在另一个模块中,并将其导出如下:Javascript 调用CommonJS模块时返回未定义,javascript,node.js,module,undefined,commonjs,Javascript,Node.js,Module,Undefined,Commonjs,我是模块化JS的新手,以前从未使用过任何模式。我正在写一个项目,其中有400多行代码,我想通过在不同的模块中分离来更好地管理它。我选择使用commonJS模块,因为我已经使用了webpack。现在,我将我的第一个函数放在另一个模块中,并将其导出如下: //init.js file var initt = function () { octaveNumber = document.getElementById("octaveNum"); audioCtx = new (window.Aud
//init.js file
var initt = function () {
octaveNumber = document.getElementById("octaveNum");
audioCtx = new (window.AudioContext || window.webkitAudioContext);
osc = audioCtx.createOscillator();
volume = audioCtx.createGain();
filter = audioCtx.createBiquadFilter();
osc.connect(filter);
volume.connect(audioCtx.destination);
booleanVal = false;
osc.frequency.value = dial.value
osc.start();
gainDisplay.innerHTML = gainSlider.value;
noteSetOscFreq()
octaveUpClick()
octaveDownClick()
waveFormSelector()
}
module.exports = initt;
在我的主JS文件中,我需要它
var messages = require('./init');
最后在它所属的If语句中调用该函数:
if (!localStorage.getItem("presetsArr") {
messages.initt;
不幸的是,我在控制台中无法读取undefined的属性'gain',这意味着Init模块没有初始化变量和其他它认为的东西。当我在不使用commonJS模块的情况下将整个函数放回原处时,它就可以正常工作了。我知道这可能与返回值有关,但我无法动手。没有工作。messages.initt X
信息√ 现在我不明白这个未定义的问题,谢谢。这与主题无关,但我得到另一个错误Uncaught TypeError:未能在“AudioParam”上设置“value”属性:提供的浮点值是非有限的。它能解决commonjs的同步问题吗?因为就像我说的,如果我不使用模块,一切都很好。因为没有完整的代码,我不能保证我的答案。我想你可以看看一些常见的JS规范文档,可能会有范围问题。正如你所看到的,我不擅长英语,希望你能理解我所说的