How to Fix Webpack Dynamic Import with Wrong Path

November 20, 2020

When using the dynamic import for code splitting you'll need to specify the publicPath option to let Webpack know where your assets are.

Here is an example:

webpack.config.js

output: {
  filename: "[name].[contenthash].js",
  path: path.join(__dirname, "public/__assets"),
  publicPath: "/__assets/",
},

path
All our bundle files are saved into the directory specified in this entry. So in my case, all my Javascript files are saved under "/public/__assets".

publicPath
When using the dynamic import, webpack will just generate script tags in your HTML that will point to the files with this prefix added.

In my case, this would be "/public/__assets".

If you leave this blank it defaults to "/" meaning that the browser would try to find the requested Javascript file under /[chunkname].js

script-tag

If the browser cannot find this file you will see the error: Uncaught (in promise) ChunkLoadError: Loading chunk failed.

error