webpack编译后,html引入的js资源不加载?

angular cli 默认集成了webpack配置, --extra-webpack-config 指向部分Webpack配置webpack.partial.js,文件里做了splitchunk分包后,编译部署后加载静态资源不发送接口请求,发现html引入的js不加载内容
通过启动器可以看到html首页引入加载了5个文件
没有做分包前正常的资源加载:
image.png

做了分包后的资源加载:
image.png
可以看到主要3个js文件区别:
在正常的入口文件中
runtime.js:引入了其他哈希值名字js文件
polyfills.js:包含了我项目的接口请求和图片
main.js
所以问题是,如何排查,做了splitchunk分包后的main.js,runtime 和 polyfills 为什么不加载?
请求js文件都是有响应返回的。
image.png
把未配置前的main.js和修改后的放到控制台执行作对比。
image.png
image.png
自定义webpack配置后的果然没有反应。
不知道是webpack还是angular.json配置问题。

另外正常的接口请求是从polyfill.js发出的,也不太理解
angular项目创建自带polyfill.ts,在构建项目时,polyfill.ts用于创建polyfill.js构建工件,其中包含支持旧浏览器中缺少的功能所需的所有 polyfill
对比了两个polyfills sourcesmap后的源码一样的
image.png

有可能webpack配置不对
以下是webpack文件的主要内容

  optimization: {
    // 预编译所有模块到一个闭包中,提升代码在浏览器中的执行速度
    // 使webpack-bundle-analyzer 报告太详细
    concatenateModules: false,
    splitChunks: {
      chunks: 'all', // 共有三个值可选:initial(初始模块)、async(按需加载模块)和all(全部模块)
      minSize: 30000, // 模块超过30k自动被抽离成公共模块
      // minChunks: 1, // 模块被引用>=1次,便分割
      maxAsyncRequests: 5, // 异步加载chunk的并发请求数量<=5
      maxInitialRequests: 5, // 一个入口并发加载的chunk数量<=3
      cacheGroups: {
        // 缓存组,会继承和覆盖splitChunks的配置
        default: {
          // 模块缓存规则,设置为false,默认缓存组将禁用
          minChunks: 2, // 模块被引用>=2次,拆分至vendors公共模块
          priority: -20, // 优先级
          reuseExistingChunk: true // 默认使用已有的模块
        },
        angular: {
          test: /[\\/]node_modules[\\/](angular)[\\/]/,
          name: 'angular',
          priority: 2
        },
        monaco_editor: {
          test: /[\\/]node_modules[\\/](monaco-editor)[\\/]/,
          name: 'monaco-editor',
          priority: 2
        },
        vendors: {
          test: /[\\/]node_modules[\\/]/,
          name: 'vendors',
          priority: 1,
          reuseExistingChunk: true
        }
      }
    },
    // runtimeChunk: {
    //   name: 'manifest'
    // }
  }

注:没有配置其他,其他webpack入口等配置继续采用的angular cli自带集成的

阅读 3k
2 个回答

在你的html模版里面

你的目的是为了引入js还是想对应用自定义webpack进行分包,做打包优化?然后发现打包后的引入的第三方js无法执行?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题