Jesse Chung
2 min readJan 11, 2022

--

Upgraded everything, hashbrowser, making my router refresh correctly

Many things were attempted, fixes to the back

var path = require(‘path’);

var SRC_DIR = path.join(__dirname, ‘/client/src’);

var DIST_DIR = path.join(__dirname, ‘/client/dist’);

module.exports = {

mode: ‘development’,

entry: `${SRC_DIR}/index.js`,

output: {

filename: ‘bundle.js’,

path: DIST_DIR,

publicPath: “/”,

},

devServer: {

historyApiFallback: true,

},

module: {

rules: [

{

test: /\.(js|jsx)?/,

exclude: /node_modules/,

use: {

loader: “babel-loader”,

options: {

presets: [

“@babel/preset-env”,

“@babel/preset-react”

],

plugins: [

[“@babel/plugin-transform-runtime”,

{

“regenerator”: true

}

]

]

}

}

},

{

test: /\.css$/,

use: [

‘style-loader’,

‘css-loader’

]

},

{

test: /\.(jpe?g|gif|png|svg)$/i,

use: [

{

loader: ‘url-loader’,

options: {

limit: 10000

}

}

]

}

]

}

};

Did not work, they said the problem was historyApiFallback: true,

But that was not it. In the end, instead of using browserrouter, which is garbage and the tutorial gave no instruction on, I used hashrouter

// import * as React from ‘react’;

// import * as ReactDOM from ‘react-dom’;

// import { BrowserRouter, Routes, Route } from ‘react-router-dom’;

// import App from ‘./components/App.jsx’;

import Expenses from “./components/routes/expenses.jsx”;

import Invoices from “./components/routes/invoices.jsx”;

import Invoice from “./components/routes/invoice.jsx”;

import ‘./main.css’;

import { HashRouter } from ‘react-router-dom’

import React from “react”;

import ReactDOM from “react-dom”;

import { BrowserRouter } from “react-router-dom”;

import { Router, Route, Routes, IndexRoute } from ‘react-router’

import “./main.css”;

import App from ‘./components/App.jsx’;

ReactDOM.render(

<HashRouter >

<Routes>

<Route path=”/” element={<App />}>

<Route path=”expenses” element={<Expenses />} />

<Route path=”ryuutama” element={<Invoices />}>

<Route

index

element={

<main style={{ padding: ‘1rem’ }}>

<p>Select an invoice</p>

</main>

}

/>

<Route path=”:invoiceId” element={<Invoice />} />

</Route>

<Route

path=”*”

element={

<main style={{ padding: ‘1rem’ }}>

<p>There’s nothing here!</p>

</main>

}

/>

</Route>

</Routes>

</HashRouter>,

document.getElementById(“app”)

);

A # shows up but what you do?

--

--