Webpack需要/导入在客户端懒惰,而不是在服务器上

时间:2016-03-23 21:47:52

标签: javascript webpack babeljs

很难找出这个问题,所以请耐心等待。

我有两个名为index.jsfeed.js的文件。它们都是同构的。

index.js

const feed = require('./feed');
console.log('feed', JSON.stringify(feed));
console.log('feed.default', feed.default);
(global || window).feed = feed;

feed.js

console.log('inside feed');
export default 5;

在服务器上,按顺序打印以下内容:

inside feed
feed {"default":5}
feed.default 5

但在客户端输出

feed {}
feed.default undefined
inside feed

当我实际检查客户端上的window.feed时(当然,这是在所有这一切发生之后),它已正确配置并且包含所有正确的数据。

有谁知道为什么会这样或者我如何能够彻底地阻止或解决它?我相信feed应始终在需要之后的语句中同步填充正确的内容。

webpack配置有点复杂,但 this one相同。

我愿意相信它是某种竞争条件(服务器已经需要它),但我不明白为什么它会被懒惰加载开始。因为我正在使用babel-node和react-hot-loader,所以我无法完全了解webpack_require中发生的事情,但我很确定这不是预期的行为所以我认为我做错了什么

1 个答案:

答案 0 :(得分:1)

您为客户端启用了一堆webpack优化插件。你真的知道他们做了什么以及他们是如何做到的?尝试禁用它们,尤其是AggressiveMergingPlugin。使您的配置尽可能简单。

我遇到类似问题的唯一一次是当我意外地有两个相互需要的模块时。也许其中一个插件正在做一些模块重新排序魔术并导致类似的情况以某种方式出现。只是一个猜测。

如果失败,请检查webpack生成的包的内容。 debugger;语句对于跳到正确的位置非常有用。