微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Splitchunks之后未定义全局变量

如何解决Splitchunks之后未定义全局变量

我正在将SplitChunksPlugin的webpack应用于我的服务。

就像

...
optimization: {
  splitChunks: {
    chunks: 'all'
  }
}

出现了一些问题。在讨论这些问题之前,我将介绍服务的精简结构。

  1. 该Web服务带来了服务器script。例如,
<script crossorigin type="module" src="/js/global.[chunkhash].js"></script>
<script crossorigin type="module" src="/js/main.[chunkhash].js"></script>

(我正在使用menifest.json

  1. global.js就像
import _ from 'lodash';

Object.assign(window,{ _ });
  1. main.js就像
... other codes

_.add(10,20); // using lodash that is assigned globally in global.js

就是这样。实际结构更加复杂。所以,现在是问题了。

  1. 当我不使用splitChunks或将splitChunks.chunks设置为async时,就没有问题。但是,当我将splitChunks.chunks设置为all时,浏览器中会显示以下问题。
_ is not defined

如果我在浏览器的控制台中输入_,则_存在。

  1. 因此,要想知道会发生什么,我将console.log插入global.js中,就像
import _ from 'lodash';

Object.assign(window,{ _ });

console.log(_,window);

console.logsplitChunks.chunks = 'async'显示日志,但在splitChunks.chunks = 'all'不显示日志。

  1. 现在,我尝试导入所有类似的供应商
/* vendors */
<script type="text/javascript" src="/js/vendors~global.[chunkhash].js"></script>
<script type="text/javascript" src="/js/vendors~main~otherjs.[chunkhash].js"></script>
/* // vendors */
<script crossorigin type="module" src="/js/global.[chunkhash].js"></script>
<script crossorigin type="module" src="/js/main.[chunkhash].js"></script>

html上面有行,但是当我在devtool中看到“网络”标签时,没有供应商的javascript文件

我在尝试应用splitChunksPlugin方面很费力,但这并不容易...而且我找不到一点线索...

对于任何答案或想法都会有很大帮助!谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。