Javascript CommonChunkPlugin中的网页包错误:在正常模式下运行时,它';不允许使用非条目块

Javascript CommonChunkPlugin中的网页包错误:在正常模式下运行时,它';不允许使用非条目块,javascript,webpack,Javascript,Webpack,因此,当我尝试将我的应用程序拆分为1个application.js文件和1个libraries.js文件时,一切正常。当我尝试将其拆分为1个application.js文件和2个libraries.js文件时,在构建时会出现以下错误: CommonChunkPlugin中的错误:在正常模式下运行时,不允许使用非条目块(库反应) 有人知道是什么导致了这个错误吗 我的网页包配置为 var webpack = require("webpack"); var ExtractTextPlugin = re

因此,当我尝试将我的应用程序拆分为1个application.js文件和1个libraries.js文件时,一切正常。当我尝试将其拆分为1个application.js文件和2个libraries.js文件时,在构建时会出现以下错误:

CommonChunkPlugin中的
错误:在正常模式下运行时,不允许使用非条目块(库反应)

有人知道是什么导致了这个错误吗

我的网页包配置为

var webpack = require("webpack");
var ExtractTextPlugin = require("extract-text-webpack-plugin");

var extractSass = new ExtractTextPlugin('main.css');

module.exports = {
    module: {
        loaders: [{
            test: /\.jsx$/,
            loader: 'babel',
            exclude: ['./node_modules'],
            query: {
                presets: ['react', 'es2015']
            }
        }, {
            test: /\.scss$/,
            loader: extractSass.extract(['css', 'sass'])
        }, {
            test: /\.html$/,
            loader: 'file?name=[name].[ext]'
        }, {
            test: /\/misc\/.*\.js$/,
            loader: 'file?name=/misc/[name].[ext]'
        }, {
            test: /\.(png|jpg|jpeg|)$/,
            loader: 'file?name=/images/[name].[ext]'
        }]
    },
    plugins: [
        extractSass,
        new webpack.optimize.CommonsChunkPlugin('libraries-core', 'libraries-core.js'),
        new webpack.optimize.CommonsChunkPlugin('libraries-react', 'libraries-react.js')
    ],
    entry: {
        //3rd party libraries
        'libraries-core': [
          'lodash',
          'superagent',
          'bluebird',
          'eventemitter3',
          'object-assign',
          'schema-inspector',
          'jsuri',
          'store-cacheable',
          'immutable'
        ],

        'libraries-react': [
          'react',
          'react-dom',
          'react-router',
          'nucleus-react'
        ],

        //application code
        application: './web/app/application.jsx',

        //mocks
        'mocked-api': './web/app/mock/api.js',
        'mocked-local-storage': './web/app/mock/local-storage.js'
    },
    output: {
        path: './web/build',
        publicPath: '/build',
        filename: '[name].js'
    }
}
遵循,您需要颠倒插件定义中关于入口点定义的区块名称顺序

这似乎是一个错误,这个网页插件的时间

new webpack.optimize.CommonsChunkPlugin('libraries-react', 'libraries-react.js')
new webpack.optimize.CommonsChunkPlugin('libraries-core', 'libraries-core.js')


在我的例子中,从CommonChunkPlugin的两个条目切换到单个条目很有帮助

之前:

plugins: [
    new webpack.optimize.CommonsChunkPlugin('libraries-core', 'libraries-core.js'),
    new webpack.optimize.CommonsChunkPlugin('libraries-react', 'libraries-react.js')
]
之后:

plugins: [
    new webpack.optimize.CommonsChunkPlugin({
      names: ['libraries-core', 'libraries-react'],
      minChunks: Infinity
   })
]

这是基于这个例子。

其他答案讨论了CommonChunkPlugin中名称的顺序,这是正确的。但有时,即使您更正了顺序(即与条目中给出的顺序相反),webpack仍可能抛出相同的错误

这是当您使用另一个CommonChunkPlugin实例来提取commons时-例如,显式webpack运行时块,顺序同样重要-这里是配置插件列表中实例的顺序。简单地说,将此实例移动到CommonChunkPlugin之后,以获得显式的供应商区块。比如说,

plugins: [
  // explicit-vendor-chunk
  new CommonsChunkPlugin({
    names: ["vendor-2", "vendor-1"],
    minChunks: Infinity
  }),

  // and the following should go after explicit-vendor-chunk
  // in the list of plugins

  // explicit-webpack-runtime-chunk
  new CommonsChunkPlugin({
    name: "manifest", // something that's not an entry
    minChunks: Infinity
  })
]

不适用于我:(它只是抛出了相同的错误,但是括号中的另一个块名我遇到了这个问题,我从一个插件实例(名称数组)开始)现在我只想定制一个提取的区块——但尝试将其分成两个插件实例,并得到OP的错误。我实验得到的是,无论指定了多少
名称,您的第一个插件实例都不需要指定
区块
或设置
子项:true
,但是后续实例必须指定其中一个或另一个(除非它是运行时/清单实例,即名称不是条目的名称)。伙计,这个插件很复杂。如果你在2017年遇到这个问题,你需要阅读插件的工作原理。
plugins: [
  // explicit-vendor-chunk
  new CommonsChunkPlugin({
    names: ["vendor-2", "vendor-1"],
    minChunks: Infinity
  }),

  // and the following should go after explicit-vendor-chunk
  // in the list of plugins

  // explicit-webpack-runtime-chunk
  new CommonsChunkPlugin({
    name: "manifest", // something that's not an entry
    minChunks: Infinity
  })
]