问题一:

用公司前端架构组给的tools工具时,在test环境下容易出现模块加载错误的问题。
观察发现,index.html, main.[hash].js 等资源文件缓存304, 各个路由页面引用的还是之前的hash资源,导致Jenkins新构建的资源没有被使用,而原来的资源已经被替换,找不到文件,所以出错。

将index.html 不缓存,每次 200 请求最新的,从而刷新各个资源文件。

问题二:

现象同样是加载失败。
区别1: 只有部分页面加载失败
区别2: 手动刷新,有时候页面又是好的,但另一个页面出问题。

发现在头部的script区域,路由请求资源时,请求的资源名不是对应的。例如: 页面A资源a.ja, 页面B资源b.js。
现象是: 进入A页面请求了b.js,B页面请求了a.js,资源出现了乱序。

再manifest中发现,fest的对应的key都是自增的数字id, 即{1: 'a.js', 2:'b.js' ...}

manifest标记了各个路由对应的js文件,但并不能保证每次打包编译是按路由的声明顺序,所以可能会出现{1:'b.js', 2:'a.js'}这种编译状况。

但同样的代码,为什么本地开发环境没出现这种状况?
同样都设置了chunkName, 但通过编译后的文件发现, 开发环境的manifest是{chunkName:’xxx.js’} 这种形式,规避了数字作为key乱序的问题。

但测试和生产环境并不是这种表现,而是数字作为key,不符合预期。
进入内部的webpack配置查看发现,在开发环境配置了NamedChunksPlugin,生成了稳定的chunkId, manifest能通过唯一的来一一对应。

资料:https://segmentfault.com/q/1010000011524513/a-1020000012187471