tutorial script page org body app javascript webpack

javascript - script - webpack-- w



ERROR webpack en CommonsChunkPlugin: mientras se ejecuta en modo normal, no está permitido usar un fragmento que no sea de entrada (3)

Entonces, cuando trato de dividir mi aplicación en 1 archivo application.js y 1 archivo libraries.js, todo funciona bien. Cuando trato de dividirlo en 1 archivo application.js y 2 archivos libraries.js, aparece este error al construir:

ERROR in CommonsChunkPlugin: While running in normal mode it''s not allowed to use a non-entry chunk (libraries-react)

¿Alguien sabe qué podría estar causando este error?

Mi configuración para el paquete web es

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'' } }


Cambiar de dos entradas para el CommonChunkPlugin a una sola ayudó en mi caso.

Antes de:

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

Después:

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

Se basa en el ejemplo two-explicit-vendor-chunks .


Las otras respuestas hablan sobre el orden de los nombres en CommonsChunkPlugin, que es verdadero. Pero a veces, incluso después de corregir el orden (es decir, al revés del orden dado en la entrada), el paquete web aún puede arrojar el mismo error.

Y esto es cuando estás usando otra instancia de CommonsChunkPlugin para extraer recursos comunes, por ej. explicit-webpack-runtime-chunk, de nuevo importa el orden - aquí el orden de las instancias en la lista de complementos de la configuración. Simplemente, mueva esta instancia después de CommonsChunkPlugin para explícitamente-proveedor-chunks. Por ejemplo,

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 }) ]


Siguiendo el problema # 1016 de github , necesitas invertir el orden de los nombres de los fragmentos en la definición del plugin con respecto a la definición de los puntos de entrada

Parece ser un error para este complemento webpack por el momento ...

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

o

new webpack.optimize.CommonsChunkPlugin({names: [''libraries-react'', ''libraries-core''], filename: ''[name].js'')