CommonsChunkPlugin 中的 webpack 错误:在正常模式下运行时,不允许使用非入口块
webpack ERROR in CommonsChunkPlugin: While running in normal mode it's not allowed to use a non-entry chunk
所以当我尝试将我的应用程序拆分为 1 个应用程序.js 个文件和 1 个库.js文件时,一切正常。 当我尝试将其拆分为 1 个应用程序.js文件和 2 个库.js文件时,我在构建时收到此错误:
ERROR in CommonsChunkPlugin: While running in normal mode it's not allowed to use a non-entry chunk (libraries-react)
有人知道可能导致此错误的原因吗?
我的 webpack 配置是
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'
}
}
在 github 问题 #1016 之后,您需要根据入口点的定义颠倒插件定义中块名称的顺序
目前似乎是这个网络包插件的一个错误......
new webpack.optimize.CommonsChunkPlugin('libraries-react', 'libraries-react.js')
new webpack.optimize.CommonsChunkPlugin('libraries-core', 'libraries-core.js')
或
new webpack.optimize.CommonsChunkPlugin({names: ['libraries-react', 'libraries-core'], filename: '[name].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
})
]
它基于两个显式供应商块示例。
其他答案是关于CommonsChunkPlugin中名称的顺序,这是真的。但有时即使在您更正顺序(即与输入中给出的顺序相反)之后,webpack 仍然可能会抛出相同的错误。
这是当你使用另一个CommonsChunkPlugin实例来提取commons的时候 - 例如explicit-webpack-runtime-chunk,顺序再次很重要 - 这里是配置插件列表中的实例顺序。简单地说,将此实例移动到 CommonsChunkPlugin 之后以获得显式供应商块。例如
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
})
]
相关文章:
- 使用压缩的JavaScript文件(不是运行时压缩)
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- 自定义运行时Can'在谷歌应用引擎中看不到我的自定义日志
- angularjs ng点击运行时标记不起作用
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- 运行时不存在Javascript函数
- JavaScript运行时错误:完成此操作所需的数据尚不可用
- JQuery 在页面上显示时不会运行视差,而是使用绝对链接
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- 运行时错误:对象不支持属性或方法
- 剑道网格不允许我在使用自定义列模板时过滤列
- 不允许的关键字符.通过 Codeigniter 中的 jQuery 在帧中加载嵌入代码时出错
- 可编辑iframe,不允许运行JavaScript
- 在函数声明而不是运行时分析所有变量
- AJAX 不允许运行 HTML 类单击函数
- Chrome 开发 - chrome.tabs.sendMessage 不通知运行时
- CommonsChunkPlugin 中的 webpack 错误:在正常模式下运行时,不允许使用非入口块
- IndexedDBShim.js错误:JavaScript运行时错误:在严格模式下不允许分配只读属性
- HTTPS页面不允许运行来自safari-extension:// URI的不安全内容
- jQuery函数在不应该运行时运行