javascripthtmlreactjsvite

Why is my Chess.js board in React not shown?


I am trying to build a simple chess website in IntelliJ by using React in Vite. I have just begun the project and for now I just want a web page, where a chess board with all the figuers in the starting position are shown.

This is my App.jsx

function App() {

    return <Chessboard position={"start"} />;
}
export default App;

This is my main.jsx

import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import App from './App.jsx'

createRoot(document.getElementById('root')).render(
  <StrictMode>
    <App />
  </StrictMode>,
)

This is my index.html

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vite + React</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="module" src="src/main.jsx" ></script>

  </body>
</html>




This is my vite.config.js

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

// https://vite.dev/config/
export default defineConfig({
  plugins: [react()],
})

This is my App.css

#root {
  max-width: 1280px;
  margin: 0 auto;
  padding: 2rem;
  text-align: center;
}

.logo {
  height: 6em;
  padding: 1.5em;
  will-change: filter;
  transition: filter 300ms;
}
.logo:hover {
  filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.react:hover {
  filter: drop-shadow(0 0 2em #61dafbaa);
}

@keyframes logo-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

@media (prefers-reduced-motion: no-preference) {
  a:nth-of-type(2) .logo {
    animation: logo-spin infinite 20s linear;
  }
}

.card {
  padding: 2em;
}

.read-the-docs {
  color: #888;
}

With these I just get an empty page in Google Chrome or Edge but without any error or warning in the console. The board does not appear.


Solution

  • Remove the index.css. It confligs with the display: flex in the index.css file, when create a new app you should delete the default styling css and make one for yourself to avoid conflig

    import { StrictMode } from 'react'
    import { createRoot } from 'react-dom/client'
    // import './index.css'
    import App from './App.tsx'
    
    createRoot(document.getElementById('root')!).render(
      <StrictMode>
        <App />
      </StrictMode>,
    )
    
    
    // index.css
    body {
      margin: 0;
      /* display: flex; */
      place-items: center;
      min-width: 320px;
      min-height: 100vh;
    }