我的webpack文件出了什么问题?

时间:2015-03-06 08:43:36

标签: javascript webpack

好的,让我们说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()。总而言之,您可以在制作此文件时找到我正在制作的错误吗?谢谢。

1 个答案:

答案 0 :(得分:2)

exportsmodule.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) {
  // ...
}

同样,这取决于你想要达到的目标。