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

时间:2018-05-07 15:16:21

标签: 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)

Webpack dev服务器运行正常

这是什么原因?

6 个答案:

答案 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仅应在生产中使用。