I am currently working on a project where I want to run GitHub-hosted projects directly in the browser. I was previously exploring nodepod and came across almostnode, so I wanted to give it a try.
I am facing an issue where custom paths do not seem to resolve correctly. After spending a few days investigating and reviewing the available documentation, I was not able to find anything related to this behavior, so I thought I would reach out for some guidance. I have attached the file I am trying to run. To reproduce the issue, please replace the following two variables with your own values:
Line 30: Replace the url variable with any simple Vite/React todo app that works with npm install followed by npm run dev.
Line 31: Replace the token variable with your own GitHub Personal Access Token.
The project itself is a simple Vite app created using:
npm create vite@latest
I then replaced the generated App.tsx file with the attached version.
I would appreciate any guidance on whether I am missing a configuration step or if there is a recommended way to handle custom path resolution with almostnode. Towards the end I have also placed all the logs on the Chrome console when i refresh the screen. I have also tried to unregister the service worker and doing hard refresh.
App.tsx
import { useEffect, useState, useRef } from "react";
import { cloneRepo } from "./components/CloneRepo";
import createContainer, { ViteDevServer } from "almostnode";
function App() {const viteServerRef = useRef(null);const [serverReady, setServerReady] = useState(false);const container = createContainer({onConsole(level, ...args) {console.log(`[${level}]`,...args);},
onServerReady(port) {
console.log(
\`Server started on ${port}\`
);
setServerReady(true);
}
});
const { vfs, npm, serverBridge } = container;
useEffect(() => {
if (!container) return;
async function runCode() {
const files = await cloneRepo({
url: "https://github.com/...", //public repo that you want to test
token: "ghp_3sg...", // YOUR GITHUB TOKEN HERE
});
await mountFiles(files);
await serverBridge.initServiceWorker();
// Fix: Prefix all paths in index.html with /__virtual__/3000/
// This ensures all requests go through the virtual server
if (vfs.existsSync("/index.html")) {
let htmlContent = vfs.readFileSync("/index.html", "utf8");
console.log("[almost-node] Original index.html (first 400 chars):", htmlContent.substring(0, 400));
const virtualPrefix = '/\__virtual_\_/3000';
// Prefix src attributes in script/link tags
htmlContent = htmlContent.replace(
/(src|href)=\["'\]\\/(\[^"'\]+)\["'\]/g,
\`$1="${virtualPrefix}/$2"\`
);
vfs.writeFileSync("/index.html", htmlContent);
console.log("\[almost-node\] Prefixed paths in index.html");
console.log("\[almost-node\] Final index.html (first 400 chars):", htmlContent.substring(0, 400));
}
console.log("Mounted files:",
vfs.readdirSync("/")
);
// Install dependencies from package.json
console.log("\[almost-node\] Installing dependencies...");
await npm.installFromPackageJson({
onProgress: (progress) =\> {
console.log("\[almost-node\] Progress:", progress);
},
includeDev: true,
});
console.log("\[almost-node\] Dependencies installed");
// Log mounted src files before starting server
const srcFiles = vfs.existsSync("/src") ? vfs.readdirSync("/src") : \[\];
console.log("\[almost-node\] Files in /src:", srcFiles);
console.log("\[almost-node\] Creating ViteDevServer...");
// Create and start ViteDevServer (the proper almostnode way)
const viteServer = new ViteDevServer(vfs, { port: 3000 });
viteServerRef.current = viteServer;
viteServer.start();
console.log("\[almost-node\] ViteDevServer started, isRunning:", viteServer.isRunning());
// Register server with serverBridge
serverBridge.registerServer(viteServer as any, 3000);
const url = serverBridge.getServerUrl(3000);
console.log("\[almost-node\] Virtual server URL:", url);
// Mark server as ready
setServerReady(true);
// Create ViteDevServer and register it
}
runCode();
}, []);
// Guard until container is ready
async function mountFiles(files: Record) {
for (const [rawPath, content] of Object.entries(files)) {
// Files come from GitHub with /app prefix, we need them at root / for ViteDevServer// /app/package.json -> /package.json
const path = rawPath.replace(/^\/app/, '') || rawPath;
// Ensure parent directory exists
const dir = path.substring(0, path.lastIndexOf('/'));
if (dir && !vfs.existsSync(dir)) {
vfs.mkdirSync(dir, { recursive: true });
}
// Write file content
vfs.writeFileSync(path, content);
}
console.log(\`\[almost-node\] Mounted ${Object.keys(files).length} files to root /\`);
console.log('\[almost-node\] Root contents:', vfs.readdirSync('/'));
}
return (Almostnode React Test
{!container ? (
\Loading container...\
) : !serverReady ? (
\Starting virtual server...\
) : (
\
\
\Virtual Server URL:\ \
{container.serverBridge.getServerUrl(3000)}
\
\
\
\
\
)}
\
);
}
export default App;
BROWSER CONSOLE LOGS
[vite] connecting...
client:955 [vite] connected.
react-dom_client.js?v=75377d0a:14338 Download the React DevTools for a better development experience: https://react.dev/link/react-devtools
CloneRepo.ts:210 [github] Fetched 23 files from youzero1/todo-app-test-1780929939729@main
App.tsx?t=1781688641356:85 [almost-node] Mounted 23 files to root /
App.tsx?t=1781688641356:86 [almost-node] Root contents: (13) ['.env.example', '.gitignore', 'Dockerfile', 'README.md', 'index.html', 'nginx.conf', 'package-lock.json', 'package.json', 'public', 'src', 'tsconfig.app.json', 'tsconfig.json', 'vite.config.ts']
App.tsx?t=1781688641356:34 [almost-node] Original index.html (first 400 chars):
Todo App
App.tsx?t=1781688641356:39 [almost-node] Prefixed paths in index.html
App.tsx?t=1781688641356:40 [almost-node] Final index.html (first 400 chars):
Todo App
App.tsx?t=1781688641356:42 Mounted files: (13) ['.env.example', '.gitignore', 'Dockerfile', 'README.md', 'index.html', 'nginx.conf', 'package-lock.json', 'package.json', 'public', 'src', 'tsconfig.app.json', 'tsconfig.json', 'vite.config.ts']
App.tsx?t=1781688641356:44 [almost-node] Installing dependencies...
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving dependencies...
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react@^19.0.0
CloneRepo.ts:210 [github] Fetched 23 files from youzero1/todo-app-test-1780929939729@main
App.tsx?t=1781688641356:85 [almost-node] Mounted 23 files to root /
App.tsx?t=1781688641356:86 [almost-node] Root contents: (13) ['.env.example', '.gitignore', 'Dockerfile', 'README.md', 'index.html', 'nginx.conf', 'package-lock.json', 'package.json', 'public', 'src', 'tsconfig.app.json', 'tsconfig.json', 'vite.config.ts']
App.tsx?t=1781688641356:34 [almost-node] Original index.html (first 400 chars):
Todo App
App.tsx?t=1781688641356:39 [almost-node] Prefixed paths in index.html
App.tsx?t=1781688641356:40 [almost-node] Final index.html (first 400 chars):
Todo App
App.tsx?t=1781688641356:42 Mounted files: (13) ['.env.example', '.gitignore', 'Dockerfile', 'README.md', 'index.html', 'nginx.conf', 'package-lock.json', 'package.json', 'public', 'src', 'tsconfig.app.json', 'tsconfig.json', 'vite.config.ts']
App.tsx?t=1781688641356:44 [almost-node] Installing dependencies...
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving dependencies...
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react@^19.0.0
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react-dom@^19.0.0
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving scheduler@^0.27.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react-router-dom@^7.1.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react-router@7.18.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react-router-dom@^7.1.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react-router@7.18.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving cookie@^1.0.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving set-cookie-parser@^2.6.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving lucide-react@^0.469.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving cookie@^1.0.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving set-cookie-parser@^2.6.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving lucide-react@^0.469.0
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving clsx@^2.1.1
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/react@^19.0.2
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving csstype@^3.2.2
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/react-dom@^19.0.2
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @vitejs/plugin-react@^4.3.4
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving vite@^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/core@^7.28.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react-refresh@^0.17.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__core@^7.20.5
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @rolldown/pluginutils@1.0.0-beta.27
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/plugin-transform-react-jsx-self@^7.27.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/plugin-transform-react-jsx-source@^7.27.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving vite@^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/core@^7.28.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react-refresh@^0.17.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__core@^7.20.5
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @rolldown/pluginutils@1.0.0-beta.27
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/plugin-transform-react-jsx-self@^7.27.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/plugin-transform-react-jsx-source@^7.27.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/core@^7.0.0-0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-plugin-utils@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/types@^7.20.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/parser@^7.20.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__template@*
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__traverse@*
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__generator@*
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/types@^7.20.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/parser@^7.20.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__template@*
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__traverse@*
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__generator@*
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/core@^7.0.0-0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-plugin-utils@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving debug@^4.1.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving json5@^2.2.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving semver@^6.3.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving gensync@^1.0.0-beta.2
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/types@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/parser@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helpers@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/template@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving fdir@^6.5.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving rollup@^4.43.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving esbuild@^0.27.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving postcss@^8.5.6
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving picomatch@^4.0.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving tinyglobby@^0.2.15
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving debug@^4.1.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving json5@^2.2.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving semver@^6.3.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving gensync@^1.0.0-beta.2
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/types@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/parser@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helpers@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/template@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving fdir@^6.5.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving rollup@^4.43.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving esbuild@^0.27.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving postcss@^8.5.6
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving picomatch@^4.0.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving tinyglobby@^0.2.15
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/types@^7.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/parser@^7.1.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/types@^7.28.2
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/types@^7.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-string-parser@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-validator-identifier@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/traverse@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/generator@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/code-frame@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving convert-source-map@^2.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/remapping@^2.3.5
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-module-transforms@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-compilation-targets@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-string-parser@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-validator-identifier@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving ms@^2.1.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/traverse@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/generator@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/code-frame@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving convert-source-map@^2.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/remapping@^2.3.5
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-module-transforms@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-compilation-targets@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/estree@1.0.9
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving nanoid@^3.3.12
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving picocolors@^1.1.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving source-map-js@^1.2.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving ms@^2.1.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving nanoid@^3.3.12
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving picocolors@^1.1.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving source-map-js@^1.2.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/estree@1.0.9
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-module-imports@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving lru-cache@^5.1.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving browserslist@^4.24.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/compat-data@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-validator-option@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving jsesc@^3.0.2
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/gen-mapping@^0.3.12
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/trace-mapping@^0.3.28
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving js-tokens@^4.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/gen-mapping@^0.3.5
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/trace-mapping@^0.3.24
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-globals@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving js-tokens@^4.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving lru-cache@^5.1.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving browserslist@^4.24.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/compat-data@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-validator-option@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving jsesc@^3.0.2
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/gen-mapping@^0.3.12
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/trace-mapping@^0.3.28
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/gen-mapping@^0.3.5
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/trace-mapping@^0.3.24
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-module-imports@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving yallist@^3.0.2
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving baseline-browser-mapping@^2.10.12
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving caniuse-lite@^1.0.30001782
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving electron-to-chromium@^1.5.328
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving node-releases@^2.0.36
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving update-browserslist-db@^1.2.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/resolve-uri@^3.1.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/sourcemap-codec@^1.4.14
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/resolve-uri@^3.1.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/sourcemap-codec@^1.4.14
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/sourcemap-codec@^1.5.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving yallist@^3.0.2
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving baseline-browser-mapping@^2.10.12
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving caniuse-lite@^1.0.30001782
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving electron-to-chromium@^1.5.328
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving node-releases@^2.0.36
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving update-browserslist-db@^1.2.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/sourcemap-codec@^1.5.0
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving escalade@^3.2.0
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving typescript@^5.7.2
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving tailwindcss@^4.0.0
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @tailwindcss/vite@^4.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @tailwindcss/node@4.3.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @tailwindcss/oxide@4.3.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @tailwindcss/node@4.3.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @tailwindcss/oxide@4.3.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving jiti@^2.7.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving lightningcss@1.32.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving magic-string@^0.30.21
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving enhanced-resolve@5.21.6
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving jiti@^2.7.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving lightningcss@1.32.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving magic-string@^0.30.21
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving enhanced-resolve@5.21.6
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving detect-libc@^2.0.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving tapable@^2.3.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving graceful-fs@^4.2.4
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving tapable@^2.3.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving graceful-fs@^4.2.4
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving detect-libc@^2.0.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Initializing ESM transformer...
almostnode.js?v=2a8ce175:99230 [transform] Loading esbuild-wasm...
App.tsx?t=1781688641356:47 [almost-node] Progress: Initializing ESM transformer...
almostnode.js?v=2a8ce175:99238 [transform] esbuild-wasm initialized
App.tsx?t=1781688641356:47 [almost-node] Progress: Installing 83 packages...
App.tsx?t=1781688641356:47 [almost-node] Progress: Downloading react@19.2.7...
App.tsx?t=1781688641356:47 [almost-node] Progress: Downloading react-dom@19.2.7...
App.tsx?t=1781688641356:47 [almost-node] Progress: Downloading scheduler@0.27.0...
App.tsx?t=1781688641356:47 [almost-node] Progress: Downloading react-router-dom@7.18.0...
App.tsx?t=1781688641356:47 [almost-node] Progress: Downloading react-router@7.18.0...
App.tsx?t=1781688641356:47 [almost-node] Progress: Downloading set-cookie-parser@2.7.2...
App.tsx?t=1781688641356:47 [almost-node] Progress: Installing 83 packages...
Skipped some lines here due to size issue but it kep on downloading and transforming packages
App.tsx?t=1781688641356:47 [almost-node] Progress: Transformed 2 files in enhanced-resolve
App.tsx?t=1781688641356:47 [almost-node] Progress: Installed 83 packages
App.tsx?t=1781688641356:51 [almost-node] Dependencies installed
App.tsx?t=1781688641356:54 [almost-node] Files in /src: (7) ['App.tsx', 'components', 'hooks', 'main.tsx', 'pages', 'styles', 'types']
App.tsx?t=1781688641356:55 [almost-node] Creating ViteDevServer...
App.tsx?t=1781688641356:60 [almost-node] ViteDevServer started, isRunning: true
App.tsx?t=1781688641356:16 Server started on 3000
App.tsx?t=1781688641356:64 [almost-node] Virtual server URL: http://localhost:5173/\__virtual_\_/3000
3000:182 [HMR] Client ready with React Refresh support
3000:1 Uncaught TypeError: Failed to resolve module specifier "@/styles/global.css". Relative references must start with either "/", "./", or "../".Understand this error
App.tsx?t=1781688641356:145 [almost-node] iframe loaded
App.tsx?t=1781688641356:47 [almost-node] Progress: Transforming 16 files in /node_modules/tapable...
App.tsx?t=1781688641356:47 [almost-node] Progress: Transforming 4 files in /node_modules/graceful-fs...
App.tsx?t=1781688641356:47 [almost-node] Progress: Transforming 6 files in /node_modules/jiti...
App.tsx?t=1781688641356:47 [almost-node] Progress: Transforming 4 files in /node_modules/detect-libc...
almostnode.js?v=2a8ce175:99319 [transform] Skipping /node_modules/jiti/lib/jiti-cli.mjs (has top-level await, likely CLI entry point)
App.tsx?t=1781688641356:47 [almost-node] Progress: Transformed 6 files in jiti
App.tsx?t=1781688641356:47 [almost-node] Progress: Transforming 1 files in /node_modules/@tailwindcss/oxide...
App.tsx?t=1781688641356:47 [almost-node] Progress: Installed 83 packages
App.tsx?t=1781688641356:51 [almost-node] Dependencies installed
App.tsx?t=1781688641356:54 [almost-node] Files in /src: (7) ['App.tsx', 'components', 'hooks', 'main.tsx', 'pages', 'styles', 'types']
App.tsx?t=1781688641356:55 [almost-node] Creating ViteDevServer...
App.tsx?t=1781688641356:60 [almost-node] ViteDevServer started, isRunning: true
App.tsx?t=1781688641356:16 Server started on 3000
App.tsx?t=1781688641356:64 [almost-node] Virtual server URL: http://localhost:5173/\__virtual_\_/3000
3000:39 [HMR] React Refresh initialized
5client:930 [vite] hot updated: /src/App.tsx