• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Błąd useRef po użyciu react router

Object Storage Arubacloud
0 głosów
55 wizyt
pytanie zadane 14 lutego w JavaScript przez JaaO Początkujący (490 p.)
zamknięte 14 lutego przez JaaO

Witam, mam problem, gdyż cały czas pojawia mi się ten błąd:
Cannot read properties of null (reading 'useRef') at BrowserRouter 

 

App.js
 

import React from 'react';
import { BrowserRouter as Router, Route, Routes , Link } from 'react-router-dom';
import ErrorBoundary from './components/ErrorBoundary'

function App() {
  const Home = () => <div>Strona Główna</div>;
  const About = () => <div>O nas</div>;
  const Contact = () => <div>Kontakt</div>;

  return (
    <ErrorBoundary>
      <Router>
        <div>
          <nav>
            <ul>
              <li>
                <Link to="/">Strona Główna</Link>
              </li>
              <li>
                <Link to="/about">O nas</Link>
              </li>
              <li>
                <Link to="/contact">Kontakt</Link>
              </li>
            </ul>
          </nav>

          <Routes>
            <Route path="/about" element={<About />} />
            <Route path="/contact" element={<Contact />} />
            <Route path="/" element={<Home />} />
          </Routes>
        </div>
      </Router>
    </ErrorBoundary>
  );
}

export default App;

 

Webpack.config.js:
 

const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const DotenvWebpack = require('dotenv-webpack');
const path = require('path');

module.exports = (env, argv) => {
  const isProduction = argv.mode === 'production';

  return {
    entry: './src/index.js', 
    output: {
      path: path.resolve(__dirname, 'dist'), 
      filename: '[name].[contenthash].js', 
      clean: true, 
      publicPath: '/', 
    },
    module: {
      rules: [
        {
          test: /\.js$/,
          exclude: /node_modules/, 
          use: {
            loader: 'babel-loader', 
            options: {
              presets: ['@babel/preset-env', '@babel/preset-react'], 
            },
          },
        },
        {
          test: /\.scss$/, 
          use: [
            isProduction ? MiniCssExtractPlugin.loader : 'style-loader', 
            'css-loader', 
            'sass-loader', 
          ],
        },
        {
          test: /\.css$/, 
          use: [
            isProduction ? MiniCssExtractPlugin.loader : 'style-loader', 
            'css-loader',
          ],
        },
        {
          test: /\.(png|svg|jpg|jpeg|gif)$/i, 
          type: 'asset/resource',
          generator: {
            filename: 'images/[name].[hash][ext]', 
          },
        },
        {
          test: /\.(woff|woff2|eot|ttf|otf)$/i, 
          type: 'asset/resource',
          generator: {
            filename: 'fonts/[name].[hash][ext]', 
          },
        },
      ],
    },
    plugins: [
      new HtmlWebpackPlugin({
        template: './public/index.html', 
      }),
      new MiniCssExtractPlugin({
        filename: '[name].[contenthash].css', 
      }),
      new DotenvWebpack(), 
    ],
    resolve: {
      extensions: ['.js', '.jsx'], 
    },
    devtool: isProduction ? 'source-map' : 'eval-source-map', 
    devServer: {
      historyApiFallback: true, 
      contentBase: path.join(__dirname, 'dist'), 
      hot: true, 
      port: 3000, 
      open: true, 
    },
    optimization: {
      splitChunks: {
        chunks: 'all', 
      },
      runtimeChunk: 'single', 
    },
  };
};

server.js w express

const express = require('express');
const path = require('path');
const app = express();
require('dotenv').config();
const PORT = process.env.PORT || 3000;

// Środowisko produkcyjne
if (process.env.NODE_ENV === 'production') {
  app.use(express.static(path.join(__dirname, '../client/build')));
  app.get('*', (req, res) => {
    res.sendFile(path.resolve(__dirname, '../client/build', 'index.html'));
  });
} else {
    app.use(express.static(path.join(__dirname, '../client/dist')));
    app.get('*', (req, res) => {
      res.sendFile(path.resolve(__dirname, '../client/dist', 'index.html'));
    })
}

app.listen(PORT, () => console.log(`Server running on http://localhost:${PORT}`));


 

 Wszystkie biblioteki są aktualne

komentarz zamknięcia: rozwiązane

Podobne pytania

0 głosów
1 odpowiedź 333 wizyt
pytanie zadane 30 maja 2022 w JavaScript przez Zaqu93 Gaduła (4,850 p.)
+1 głos
0 odpowiedzi 115 wizyt
0 głosów
0 odpowiedzi 345 wizyt

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...