0
为了简单起见,假设我有两个模块:table.js
和chart.js
。我想用WebPack捆绑它们,但是最终会出现一个错误,可能是由于它们彼此依赖。如何捆绑循环依赖模块?
table.js
:
var chart = require('./chart');
module.exports = (function() {
var init = function() {
_loadTable();
chart.init();
};
var update = function() {
console.log('table updated');
};
return {
init: init,
update: update
}
})();
chart.js
:
var table = require('./table');
module.exports = (function() {
var init = function() {
_drawChart();
table.update(); // will throw an error: table.update is not a function
};
return {
init: init
}
})();
什么这里发生了什么? 表首先由table.init()
加载,然后通过chart.init()
加载图表模块。图表被绘制并试图更新表格作为回报。
然而,在这一点上chart.js
不知道什么是var table = require('./table')
(因为在那一刻var table = {}
),从而table.update()
将抛出一个错误。
这在模块管理为“传统”(由脚本标记加载并通过全局window
对象进行通信)进行管理之前并未发生。
我在想,如果WebPack仍然可以用于像这样的并行相关模块?
我不知道webpack,但是如果它遵循节点所做的模块解析过程,那么简单地说,导出的对象上没有'update'功能。你以前是怎么做到的? – MinusFour
实际上,我回过头来看,这一定是WebPack的问题,因为模块解析过程不应该有任何问题。您所做的只是导出函数,并且在所有模块都执行完毕之前您不会调用它们。 – MinusFour