mirror of
https://github.com/sipeed/NanoKVM.git
synced 2026-11-09 17:44:43 -06:00
`react-simple-keyboard` ships only a UMD/CJS bundle whose `module.exports`
is `{ KeyboardReact, default: KeyboardReact }` with `__esModule: true`.
Vite 8 applies Node-compatible CJS interop for ESM importers, so the
default import resolved to the whole `module.exports` object instead of
the component. Rendering it made React throw "Minified React error #130"
(`got: object`) as soon as the on-screen keyboard was opened.
Import the `KeyboardReact` named export, which is the same component,
and keep `KeyboardButtonTheme` as a type-only import.
Fixes #936
NanoKVM Frontend
This is NanoKVM web project. For more documentation, please refer to the Wiki.
Structure
src
├── api // backend api
├── assets // static resources
├── components // public components
├── i18n // language resources
├── jotai // Global jotai variables
├── lib // util libs
├── pages // web pages
│ ├── auth // login and password
│ ├── desktop // remote desktop
│ └── terminal // web terminal
├── router.tsx // routers
└── types // types
Local Development
Requirements: Node.js >= 22 and pnpm >= 11 (the versions CI uses; enforced via the engines field in package.json).
Development requires SSH. You can enable it in the Web Settings:
Settings > SSH.
Due to CORS restrictions, authentication needs to be disabled during local development.
To develop authentication features, you need to build the project and test in NanoKVM.
- Log in to NanoKVM via SSH:
ssh root@your-nanokvm-ip(default password is root). - Open the configuration file
/etc/kvm/server.yaml/and addauthentication: disable. ⚠️CAUTION: This option disables all authentication and should NOT be enabled in production environment! - Restart the service:
/etc/init.d/S95nanokvm restart. - Edit the
.env.developmentfile and changeVITE_SERVER_IPto your NanoKVM IP address. - Run
pnpm devto start the server and visit http://localhost:3001/ in browser.
It's recommended to disable browser caching to avoid access issues during development:
- Open the browser Developer Tools;
- Go to the
Networktab; - Check
Disable cacheoption; - Refresh the page.
Deployment
Build:
cd web
pnpm install
pnpm build
- After the compilation is complete, the
distfolder will be generated. - Rename the folder to
web. - Upload
webto/kvmapp/server/in NanoKVM. - Restart the service by executing
/etc/init.d/S95nanokvm restartin NanoKVM.
Tips:
- File uploads requires SSH. You can enable it in the Web Settings:
Settings > SSH. - Browser may have old version cache. If you can't open the page, try a force refresh or clear the cache.