尝试在我的配置中使用散列运行webpack build
时出现此错误:
ERROR in chunk main [entry]
[name].[chunkhash].js
Cannot use [chunkhash] or [contenthash] for chunk in '[name].[chunkhash].js'
(use [hash] instead)
Webpack dev服务器运行正常
这是什么原因?
答案 0 :(得分:20)
插件中的注释new webpack.HotModuleReplacementPlugin()
有助于解决此问题
答案 1 :(得分:4)
这也对我有用...感谢@pizzaae。要注意的一件事是您never want to enable HMR during production。如果要同时使用HotModuleReplacementPlugin和chunkash,则为Prod和Dev使用不同的Webpack配置可以有所帮助。
答案 2 :(得分:2)
我的解决方案是根据模式是生产模式还是开发模式来更改文件名:
filename: mode === 'production' ? '[name].[chunkhash].js' : '[name].[hash].js',
解决了我的问题,仍然可以将chunkhash用于生产文件名以及HotModuleReplacementPlugin。
答案 3 :(得分:1)
如果在模式:“开发”下配置webpack.HotModuleReplacementPlugin()。删除或注释掉 webpack.HotModuleReplacementPlugin()表单插件。
module.exports = merge(common, {
mode: 'development',
devtool: 'inline-source-map', // source-map
devServer: {
contentBase: './dist',
//hot: true
},
plugins: [
new ManifestPlugin({fileName: '006.manifest.json'}),
new webpack.NamedModulesPlugin()
//new webpack.HotModuleReplacementPlugin()
]
})
答案 4 :(得分:1)
在我的情况下,我想为开发服务器启用Hot Module替换,所以我将其更改为:
output: {
filename: '[name].[hash].js',
},
答案 5 :(得分:0)
我做了更多类似的事情,所以您没有注释掉功能
output: {
filename: process.env.production ? `bundle-[chunkHash].js` : `bundle-[hash].js`
}
ChunkHash仅应在生产中使用。