为简单起见,我们假设我有两个模块:SearchResponse searchResponse = client
.prepareSearch(ELASTICSEARCH_INDEX)
.setTypes(ELASTICSEARCH_TYPE)
.setFetchSource(true)//Notice here
.addScriptField("distance", distanceScript(queryForm))
.addAggregation(aggregations(queryForm))
.setQuery(filters(queryForm))
.execute()
.actionGet();
和table.js
。我想用WebPack捆绑它们,但我最终得到一个错误,可能是因为它们彼此依赖。
chart.js
:
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 = {}
会抛出错误。< / p>
在管理模块之前,这并没有发生过#34;传统上&#34; (由脚本标记加载并通过全局table.update()
对象进行通信)。
我想知道,如果WebPack仍可用于这些依赖于并行的模块吗?
答案 0 :(得分:0)
本文提供了一个非常详尽的列表,列出了解决问题的方法。
http://www.bitnative.com/2015/02/03/circular-dependencies-in-requirejs/
require语句的内联形式可能是最快的修复,但有许多缺点。