不能在[[name]中使用[chunkhash]或[contenthash]作为块.[chunkhash] .js'(改为使用[hash])

piz*_*zae 20 webpack

尝试webpack build在我的配置中使用散列运行时出现此错误:

ERROR in chunk main [entry]
[name].[chunkhash].js
Cannot use [chunkhash] or [contenthash] for chunk in '[name].[chunkhash].js' 
(use [hash] instead)
Run Code Online (Sandbox Code Playgroud)

Webpack dev服务器运行正常

这是什么原因?

piz*_*zae 25

new webpack.HotModuleReplacementPlugin()在插件中注释帮助解决了这个问题

  • 如果您需要HotModuleReplacementPlugin,那该如何解决? (3认同)
  • 您可以根据环境有不同的配置。在需要“HotModuleReplacementPlugin”的同时,您可能不需要文件名中的哈希值。 (2认同)

小智 5

这也对我有用...感谢@pizzaae。要注意的一件事是,您 永远不想在生产期间启用HMR。如果要同时使用HotModuleReplacementPlugin和chunkash,则为Prod和Dev使用不同的Webpack配置可以有所帮助。


Cek*_*eek 5

我做了更像这样的事情,所以你没有注释掉功能

output: {
    filename: process.env.production ? `bundle-[chunkHash].js` : `bundle-[hash].js`
}
Run Code Online (Sandbox Code Playgroud)

ChunkHash 应该只在生产中使用。


小智 5

我的解决方案是根据模式是生产模式还是开发模式来更改文件名:

filename: mode === 'production' ? '[name].[chunkhash].js' : '[name].[hash].js',

解决了我的问题,但仍然可以将chunkhash用于生产文件名以及HotModuleReplacementPlugin。