AggressiveSplittingPlugin - > webpackJsonp未定义

Yur*_*zov 5 webpack

为了使用AggressiveSplittingPlugin并通过HTTP/2加速下载捆绑包,转换到webpack2,我在初始化每个部分时遇到了"Uncaught ReferenceError:webpackJsonp未定义"的问题.有没有人遇到这样的事情,你是否以某种方式解决了这个问题?

var path = require('path');
var webpack = require('webpack');
var ManifestPlugin = require('webpack-manifest-plugin');

module.exports = {
  devtool: 'source-map',
  entry: [
    path.join(__dirname, '../../js/main'),
    'jquery'
  ],
  output: {
    path: path.join(__dirname, '../../js/public'),
    filename: '[name].js',
    publicPath: '/assets/'
  },
  resolve: {
    alias: {'jquery': path.join(__dirname, '../../js/modules/libs/jquery-2.2.3.min.js')},
    extensions: ['.js', '.jsx'],
    modules: [
      path.resolve(path.join(__dirname, '../../js')),
      "node_modules"
    ],
  },
  plugins: [
    new webpack.optimize.OccurrenceOrderPlugin(true),
    new webpack.NoEmitOnErrorsPlugin(),
    new webpack.optimize.UglifyJsPlugin({
      output: {
        comments: false
      },
      compress: {
        warnings: false,
        // eslint-disable-next-line camelcase
        screw_ie8: true
      }
    }),
    new webpack.ProvidePlugin({
      jQuery: 'jquery',
      $: 'jquery',
      jquery: 'jquery'
    }),
    new webpack.optimize.AggressiveSplittingPlugin({
      minSize: 20000,
      maxSize: 50000
    }),
    new ManifestPlugin({
      fileName: 'manifest.json',
      basePath: 'js/public/'
    }),
  ],
  module: {
    rules: [
      {
        test: /\.js$/,
        use: [
          {
            loader: 'babel-loader'
          }
        ],
        include: path.join(__dirname, '../../js'),
        exclude: /node_modules/
      }
    ]
  }
};
Run Code Online (Sandbox Code Playgroud)

lor*_*non -1

您可以使用 CommonsChunkPlugin 提取清单,其中也将包含 webpack 运行时:

new webpack.optimize.CommonsChunkPlugin({ name: 'manifest' })
Run Code Online (Sandbox Code Playgroud)

您还必须确保此清单是第一个脚本,然后添加其他(积极分割的)块的脚本标签。