Webpack Dev Server error with multiple entry points for React App with Hooks

997 Views Asked by At

My react app with hooks was working fine with webpack devserver prior to converting config to allow for multiple entry points. Now when I run the same script script webpack-dev-server --hot --mode development --env.NODE_ENV=development and open http://localhost:8080/ in browser I get "Cannot GET /". What am I doing wrong?

Terminal output looks good after build:

$ webpack-dev-server --hot --mode development --env.NODE_ENV=development
ℹ 「wds」: Project is running at http://localhost:8080/
ℹ 「wds」: webpack output is served from /
ℹ 「wds」: Content not from webpack is served from {removed for brevity}/dist
ℹ 「wds」: 404s will fallback to /index.html
ℹ 「wdm」: Hash: e45f7a36fc8bdca8edb6
Version: webpack 4.42.0
Time: 4904ms
Built at: 08/11/2020 11:40:59 AM
                               Asset        Size  Chunks             Chunk Names
                   ./dist/index.html  1010 bytes          [emitted]  
                   ./dist/print.html  1010 bytes          [emitted]  
076203c089fb8776a9af1f774cca729a.png    7.33 KiB          [emitted]  
27119dc6caf0ef34579277fc47e04091.png    11.3 KiB          [emitted]  
2fde2afc1b2f2678017866b0a842c0f0.png    7.67 KiB          [emitted]  
388452a294715e1e38697b924415be4c.png    8.88 KiB          [emitted]  
499d9b545f4bf7448efd79a05ae50fa9.png    10.4 KiB          [emitted]  
4cfb1ea673e03372d54851addd95ffab.png    9.54 KiB          [emitted]  
54aa24ec5557c031f59f289549d07173.png    7.32 KiB          [emitted]  
5595fac7e9b84956c198eaf540871984.png    9.69 KiB          [emitted]  
5b9c2d4502db2a878afb7d19ad503ac9.png    11.1 KiB          [emitted]  
76e59fbcc35839483d0fd8230030f913.png    8.66 KiB          [emitted]  
9ced9326d0e5dce271a86da72ae44738.png    9.19 KiB          [emitted]  
a90a0f1edeee86e4dd49d5c07b595ac6.png    8.43 KiB          [emitted]  
a9df77f8fe5132a8d87b6f627b4d3e8b.png    8.71 KiB          [emitted]  
ab593d72a87c73c68553a3eeba4e6f1f.png    8.61 KiB          [emitted]  
ad067419ad4dbb0328b8d6783b67ed7d.png    6.33 KiB          [emitted]  
b31cbc0aedab9315d89741eeaa3ed92f.png    7.42 KiB          [emitted]  
e5de86ef1e9260949fcd0c943f6f89ea.png    8.49 KiB          [emitted]  
ed53543f8b1bf19705296379f388a27c.png    9.65 KiB          [emitted]  
f1f6630ed0b4e032e13acfc907f6a7b8.png    7.09 KiB          [emitted]  
f204d56ec1f719e19b06b922d4c38ace.png    9.62 KiB          [emitted]  
                             main.js    6.75 MiB    main  [emitted]  main
                            print.js     899 KiB   print  [emitted]  print
Entrypoint main = main.js
Entrypoint print = print.js

Here's my webpack.config.js:

const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  entry: {
    main: ["@babel/polyfill", "./src/index.js"],
    print: ["@babel/polyfill", "./src/print.js"],
  },
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "[name].js",
    publicPath: "/",
  },
  module: {
    rules: [
      { 
        test: /\.js$/,
        loader: "babel-loader",
        exclude: /node_modules/,
      },
      {
        test: /\.css$/,
        use: ["style-loader", "css-loader"],
      },
      {
        test: /\.(png|jpg|ico)$/,
        loader: "file-loader",
      },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: "./public/index.html",
      chunks: ["main"],
      filename: "./dist/index.html",
    }),
    new HtmlWebpackPlugin({
      template: "./public/index.html",
      chunks: ["print"],
      filename: "./dist/print.html",
    }),
  ],
  devServer: {
    contentBase: path.resolve(__dirname, "dist"),
    historyApiFallback: true,
  },
  resolve: {
    alias: {
      "react-dom": "@hot-loader/react-dom",
    },
  },
};

Here's my main chunk root index.js:

import React from "react";
import ReactDOM from "react-dom";
import App from "./App";

ReactDOM.render(<App />, document.querySelector("#root"));

Then, main App component rendered:

import { hot } from "react-hot-loader/root";
import React from "react";
import { Router, Switch } from "react-router-dom";
import history from "./history";
import { AuthProvider } from "./context/auth";

const App = () => {
  return (
    <AuthProvider>
        <Router history={history}>
          <Switch> ... </Switch>
        </Router>
    </AuthProvider>
  );
};

export default hot(App);

Lastly, my print chunk root print.js:

console.log("Hello, Wrold!");

Thanks in advance for any help!

0

There are 0 best solutions below