好的,让我们说main.js
,我有这个:
var topMenu = require('./menu.js');
console.log(topMenu.getCount()); // 1
topMenu.increment();
console.log(topMenu.getCount()); // 2
在menu.js
,我有这个:
exports.currentTab = 0;
var count = 1;
exports.increment = function() { count++; };
exports.getCount = function() { return count; };
exports.showSearch = function () {
$(".about-box").removeClass("active");
$(".tele-box").removeClass("active");
$(".tuts-box").addClass("active");
$(".search-div").toggle();
if (!$(".search-div").is(":visible")) {
$(".tuts-box").removeClass("active");
}
currentTab = 1;
}
module.exports = [
exports.onKeyPressing = document.onkeypress = function(evt) {
if (evt.keyCode == 49) {
console.log("Open 1st box");
showTeles();
}
if (evt.keyCode == 50) {
console.log("Open 2nd box");
showSearch();
}
if (evt.keyCode == 51) {
console.log("Open 3rd box");
showAbout();
}
}
];
我的bundle.js
正确编译。那,我知道。但是,打开访问该页面,我在Uncaught TypeError: undefined is not a function
({1}}上的console.log(topMenu.getCount()); // 1
上获得main.js
(bundle.js,因为它已正确编译...)
然而,当我删除它以及里面的内容时:
module.exports = [
...
];
位于menu.js
底部附近,然后就可以了,我得到了:
1
2
正如所料。我的文件有什么问题,我该如何解决?另外,我可能错误地定义了exports.showSearch()
。总而言之,您可以在制作此文件时找到我正在制作的错误吗?谢谢。
答案 0 :(得分:2)
exports
是module.exports
的别名。因此,当您在此部分中将数组分配给module.exports
时:
module.exports = [
...
];
您正在覆盖(清除)module.exports
中的值,因此exports
。所以这些任务都丢失了:
exports.currentTab = 0;
exports.increment = function() { count++; };
exports.getCount = function() { return count; };
exports.showSearch = function () {
// ...
}
这就是你得到Uncaught TypeError: undefined is not a function
的原因。 getCount()
(和exports
)附加了topMenu
这样的功能。
<强>更新强>
我不知道您想要达到什么目标,但删除module.exports
的作业可能会解决问题:
exports.onKeyPressing = document.onkeypress = function(evt) {
// ...
}
同样,这取决于你想要达到的目标。