'How do I use Webpack to get all files into one file?

I want to use Webpack to add a handler on React. My file package.json look like this:

{
 "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.3.2",
    "@testing-library/user-event": "^7.1.2",
    "dotenv": "^8.2.0",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-scripts": "3.4.1"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "build-server": "webpack --config webpack.server.js --mode=production",
    "start-server": "node ./server-build/index.js"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@babel/core": "^7.17.10",
    "@babel/preset-env": "^7.17.10",
    "@babel/preset-react": "^7.16.7",
    "babel-loader": "^8.2.5",
    "css-loader": "^6.7.1",
    "jest-extended": "^0.11.5",
    "serverless-finch": "^4.0.0",
    "webpack": "^5.72.0",
    "webpack-cli": "^4.9.2"
  }
}

The Webpack configuration file webpack.server.js looks like this:

const path = require("path");

module.exports = {
  entry: "./src/server/index.js",

  target: "node",

  externals: [],

  output: {
    path: path.resolve("server-build"),
    filename: "index.js",
    library: "index",
    libraryTarget: "umd",
  },

  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        use: "babel-loader",
      },
      {
        test: /\.css$/,
        use: "css-loader",
      },
    ],
  },
  resolve: {
    extensions: ['*', '.js', '.jsx'],
  },
};

The Babel configuration file babel.config.js:

{
  "presets": [
               "@babel/preset-react",
               "@babel/preset-env"
             ]
}

The handler file index.js looks like:

import React from "react";
import ReactDOMServer from "react-dom/server";
import SSRApp from "../SSRApp";

const indexFile = `
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <meta
      name="description"
      content="Web site created using create-react-app"
    />
    <title>React App</title>
  </head>
  <body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
    <div>Rendered on Server</div>
  </body>
</html>`;

const handler = async function (event) {
  try {
  
    const app = ReactDOMServer.renderToString(<SSRApp  />);
    const html = indexFile.replace(
      '<div id="root"></div>',
      `<div id="root">${app}</div>`
    );
    return {
      statusCode: 200,
      headers: { "Content-Type": "text/html" },
      body: html,
    };
  } catch (error) {
    console.log(`Error ${error.message}`);
    return `Error ${error}`;
  }
};

export { handler };

After I run the npm run build-server the npm run start-server I get error:

steinko@Steins-MacBook-Pro frontend % npm run start-server

> [email protected] start-server
> node ./server-build/index.js

webpack://index/./src/server/index.js?:19
  var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(event) {
                                             ^

ReferenceError: regeneratorRuntime is not defined
    at eval (webpack://index/./src/server/index.js?:19:46)
    at eval (webpack://index/./src/server/index.js?:53:2)
    at Object../src/server/index.js (/Users/steinko/development/ATMandBank/Bank/frontend/server-build/index.js:160:1)
    at __webpack_require__ (/Users/steinko/development/ATMandBank/Bank/frontend/server-build/index.js:195:41)
    at /Users/steinko/development/ATMandBank/Bank/frontend/server-build/index.js:247:37
    at /Users/steinko/development/ATMandBank/Bank/frontend/server-build/index.js:250:12
    at webpackUniversalModuleDefinition (/Users/steinko/development/ATMandBank/Bank/frontend/server-build/index.js:11:20)
    at Object.<anonymous> (/Users/steinko/development/ATMandBank/Bank/frontend/server-build/index.js:18:3)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)

How do I fix this error?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source