Skip to content

Troubleshooting & FAQ ​

Having trouble with EreoJS? This page covers the most frequently encountered issues and their solutions. Start here before opening a GitHub issue -- chances are the answer is below.

Common Problems ​

Detailed guides for recurring categories of issues:

  • Common Errors -- A catalog of error messages you may encounter, with explanations of what causes each one and step-by-step solutions.
  • Debugging -- Techniques for diagnosing issues using the built-in dev-inspector, console debugging, source maps, and network analysis.
  • Known Issues -- Current v0.1.x known issues, their status, and available workarounds while fixes are in progress.

Quick Fixes ​

"Cannot find module '@ereo/...'" ​

This usually means dependencies are not installed or out of sync. Run:

bash
bun install

If that does not resolve it, remove node_modules and the lockfile, then reinstall:

bash
rm -rf node_modules bun.lock
bun install

"Port 3000 already in use" ​

Another process is occupying the default port. Either change the port in your config:

ts
// ereo.config.ts
export default defineConfig({
  server: { port: 3001 }
})

Or set the PORT environment variable for a one-off run:

bash
PORT=3001 bun dev

To find and kill the process using port 3000:

bash
lsof -i :3000
kill -9 <PID>

Build Fails with TypeScript Errors ​

Run the type checker in isolation to see the full list of errors:

bash
bun run typecheck

Common causes include missing type definitions for third-party packages (install @types/... packages), incorrect tsconfig.json paths, or using newer TypeScript syntax that your configured version does not support.

Hot Reload Not Working ​

If changes to your files are not reflected in the browser during development, clear the internal cache and restart:

bash
rm -rf .ereo && bun dev

This removes the .ereo cache directory that stores compiled assets and route manifests. A fresh bun dev rebuilds everything from scratch.

"Cannot use import statement outside a module" ​

This error means your project is not configured for ES modules. Verify that your package.json includes:

json
{
  "type": "module"
}

EreoJS requires ESM. If you are using a third-party library that only provides CommonJS exports, check whether a newer version with ESM support is available, or use a dynamic import() as a workaround.

Hydration Mismatch ​

A hydration mismatch occurs when the HTML rendered on the server does not match what React produces on the client. Common causes:

  • Non-deterministic values in server components: Date.now(), Math.random(), or crypto.randomUUID() produce different output on each render. Move these to client-side effects or pass them as stable props from a loader.
  • Browser-only APIs in shared components: Accessing window, document, or localStorage during server rendering will either throw or produce different output. Guard these behind typeof window !== 'undefined' checks or move them into useEffect.
  • Conditional rendering based on client state: If a component renders differently based on viewport size or media queries, use CSS-based solutions or defer the conditional rendering to a useEffect on the client.

Styles Not Loading in Production ​

If your styles appear in development but are missing in production builds:

  • Tailwind CSS: Verify that your tailwind.config.ts content array includes all paths where you use Tailwind classes (e.g., './app/**/*.{ts,tsx}').
  • CSS imports: Ensure your CSS import paths are correct and relative to the file importing them. Absolute paths that work in development may resolve differently in the production build.
  • PostCSS: Check that your postcss.config.js is present at the project root and includes the necessary plugins.

"ECONNREFUSED" in Loader ​

This error means a loader is trying to reach an external service (database, API, microservice) that is not responding. Check:

  • Is the service running? Start your database or API server before running bun dev.
  • Is the connection URL correct? Verify DATABASE_URL or API base URLs in your .env file. A common mistake is using localhost when the service runs in a Docker container (use the container name or host.docker.internal instead).
  • Firewall or network issues? Ensure the target port is open and accessible from your development machine.

FAQ by Topic ​

  • Routing FAQ -- Answers about dynamic routes, catch-all segments, route groups, middleware ordering, and layout nesting.
  • Data Loading FAQ -- Answers about loaders, actions, caching strategies, revalidation triggers, and streaming.
  • Deployment FAQ -- Answers about build issues, platform-specific configuration, environment variables, and production debugging.
  • Forms FAQ -- Answers about validation timing, field arrays, server-side error handling, and progressive enhancement.

Debugging Tips ​

When the quick fixes above do not resolve your issue, try these diagnostic techniques:

  • Enable debug logging: Set DEBUG=ereo:* before running your dev server to see detailed internal logs for routing, caching, and rendering.
    bash
    DEBUG=ereo:* bun dev
  • Use the dev-inspector: In development mode, press Ctrl+Shift+I (or Cmd+Shift+I on macOS) to open the EreoJS dev-inspector overlay, which shows route matching, loader timing, and cache status for the current page.
  • Check the Network tab: Open your browser's DevTools Network tab to inspect loader requests, response headers (especially cache-related headers), and response payloads.
  • Inspect the .ereo directory: The build cache in .ereo/ contains the compiled route manifest and asset map. Reviewing these files can reveal misconfigurations in routing or asset paths.

Still Stuck? ​

If none of the solutions above resolve your issue, reach out to the community:

  • GitHub Issues -- Search existing issues or file a new bug report. Please include the details listed in the "Report a Bug" section below.
  • Discord Community -- Get help from other EreoJS developers in real time. The #help channel is the best place for troubleshooting questions.
  • GitHub Discussions -- For longer-form questions, ideas, and discussions that do not fit the issue tracker.

Report a Bug ​

When filing a bug report, include the following information to help maintainers diagnose the issue quickly:

  • EreoJS version: Run bun ereo --version to get the exact version.
  • Bun version: Run bun --version.
  • Operating system: macOS, Linux, or Windows, with version.
  • Steps to reproduce: A minimal sequence of steps that reliably triggers the issue.
  • Expected behavior: What you expected to happen.
  • Actual behavior: What actually happened, including any error messages or stack traces.
  • Minimal reproduction: A link to a GitHub repository or a code snippet that demonstrates the issue. The smaller the reproduction, the faster the fix.

Released under the MIT License.