CommonJS 模块在调用时返回 undefined
CommonJS module returning undefined when is called
我对模块化 JS 完全陌生,以前从未使用过任何模式。我正在编写一个项目,其中包含多达 400 多行代码,我想通过将不同模块中的内容分开来更好地管理它。我选择使用 commonJS 模块是因为我已经在使用 webpack。现在我把我的第一个函数放在另一个模块中并像这样导出它:
//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;
不幸的是,我在控制台中得到 Cannot read property 'gain' of undefined
,这意味着 Init 模块没有按预期初始化变量和其他东西。当我在不使用 commonJS 模块的情况下放回整个函数时,它工作得很好。我知道这可能与返回值有关,但我不能动手。没有任何效果。
messages.initt() X
消息() √
我对模块化 JS 完全陌生,以前从未使用过任何模式。我正在编写一个项目,其中包含多达 400 多行代码,我想通过将不同模块中的内容分开来更好地管理它。我选择使用 commonJS 模块是因为我已经在使用 webpack。现在我把我的第一个函数放在另一个模块中并像这样导出它:
//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;
不幸的是,我在控制台中得到 Cannot read property 'gain' of undefined
,这意味着 Init 模块没有按预期初始化变量和其他东西。当我在不使用 commonJS 模块的情况下放回整个函数时,它工作得很好。我知道这可能与返回值有关,但我不能动手。没有任何效果。
messages.initt() X
消息() √