Files
metabuilder/codegen/docs/ERROR_FIXES.md
johndoe6345789 a51130a127 feat: Add external low-code and postgres repositories
- codegen: Low-code React app with JSON-driven component system
- packagerepo: Schema-driven package repository with backend/frontend
- postgres: Next.js app with Drizzle ORM and PostgreSQL

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 16:48:52 +00:00

8.7 KiB

Error Fixes Summary

This document tracks all errors fixed in the codebase and provides guidance for preventing similar issues.

Fixed Issues

1. SCSS @include Directives in Tailwind CSS

Problem: Tailwind CSS v4 was encountering SCSS @include directives and warning about "Unknown at rule: @include"

Location: src/styles/main.scss

Root Cause: SCSS mixins were being used (@include respond-to('lg'), @include respond-below('md')) but Tailwind CSS doesn't understand SCSS syntax when processing CSS files.

Solution: Replaced SCSS mixins with standard CSS media queries:

  • @include respond-to('lg')@media (min-width: 1024px)
  • @include respond-below('md')@media (max-width: 767px)
  • @include respond-below('lg')@media (max-width: 1023px)

Files Modified:

  • src/styles/main.scss (4 instances fixed)

Prevention:

  • Use CSS media queries directly in SCSS files that will be processed by Tailwind
  • Keep SCSS mixins for files that go through the Sass compiler first
  • Consider migrating to Tailwind's responsive utilities where possible

2. TypeScript Type Mismatches in JSON-Driven Components

Problem: Multiple TypeScript errors related to prop types in JSON page renderer components

Errors:

error TS2322: Type '{ config: {...} }' is not assignable to type 'IntrinsicAttributes & ComponentRendererProps'.
Property 'config' does not exist on type 'IntrinsicAttributes & ComponentRendererProps'.

Location:

  • src/components/JSONFlaskDesigner.tsx
  • src/components/JSONLambdaDesigner.tsx
  • src/components/JSONStyleDesigner.tsx
  • src/components/JSONWorkflowDesigner.tsx

Root Cause: The ComponentRendererProps interface was too strict - it expected a specific PageSchema type but JSON imports have a different structure.

Solution: Made the interface more flexible by allowing config to be PageSchema | any:

export interface ComponentRendererProps {
  config?: PageSchema | any  // Now accepts both strict types and JSON imports
  schema?: PageSchema
  data?: Record<string, any>
  functions?: Record<string, (...args: any[]) => any>
}

Also fixed JSONWorkflowDesigner to properly cast the JSON import:

const schema = workflowDesignerSchema as unknown as PageSchema

Files Modified:

  • src/components/JSONPageRenderer.tsx
  • src/components/JSONWorkflowDesigner.tsx

Prevention:

  • Use type assertions (as unknown as Type) when importing JSON config files
  • Make interfaces flexible enough to accept config from multiple sources
  • Consider using Zod schemas to validate JSON at runtime

3. Duplicate Export Names in Component Index

Problem: TypeScript module ambiguity errors for EmptyState, LoadingState, and StatCard

Errors:

error TS2308: Module './atoms' has already exported a member named 'EmptyState'. 
Consider explicitly re-exporting to resolve the ambiguity.

Location: src/components/index.ts

Root Cause: Both atoms and molecules directories export components with the same names, and using export * from creates naming conflicts.

Solution: Changed from wildcard exports to explicit named exports for molecules, using the aliases already defined in the molecules index:

export * from './atoms'
export {
  // ... other exports
  MoleculeEmptyState,
  MoleculeLoadingState,
  MoleculeStatCard
} from './molecules'

Files Modified:

  • src/components/index.ts

Prevention:

  • Use explicit named exports when dealing with large component libraries
  • Follow consistent naming conventions (atoms vs molecules)
  • Consider using prefixes or namespaces for similar components

4. StatCard Props Type Error (Pending Investigation) ⚠️

Problem: TypeScript error claiming title property doesn't exist on StatCard, despite the interface clearly defining it

Error:

error TS2322: Type '{ icon: Element; title: string; value: number; ... }' 
is not assignable to type 'IntrinsicAttributes & StatCardProps'.
Property 'title' does not exist on type 'IntrinsicAttributes & StatCardProps'.

Location: src/components/ProjectDashboard.tsx (lines 78-124)

Status: Likely a stale TypeScript cache issue. The interface in src/components/atoms/StatCard.tsx correctly defines all required props including title.

Recommended Actions:

  1. Restart TypeScript server in IDE
  2. Delete node_modules and reinstall dependencies
  3. Clear TypeScript build cache
  4. Rebuild the project from scratch

Note: This is likely not a code issue but a development environment issue.


CI/CD Issues (GitHub Actions)

Package Lock Sync Issue

Problem: npm ci failing because package-lock.json is out of sync with package.json

Error:

npm error `npm ci` can only install packages when your package.json 
and package-lock.json or npm-shrinkwrap.json are in sync.

Root Cause:

  • package.json requires @github/spark@0.44.15
  • package-lock.json has @github/spark@0.0.1
  • Multiple Octokit dependencies missing from lock file

Solution: Run npm install locally to update package-lock.json, then commit both files.

Prevention:

  • Always commit both package.json and package-lock.json together
  • Use npm install instead of manually editing package.json
  • Run CI checks locally before pushing

Browser Console Errors (Codespaces/Vite)

502 Bad Gateway Errors

Problem: Vite dev server returning 502 errors for all resources (@vite/client, /src/main.tsx, etc.)

Root Cause: Port mismatch - Codespaces forwarding port 5000 but Vite running on port 5173

Solution Options:

  1. Update port forwarding (Recommended):

    • In Codespaces Ports panel, forward port 5173 instead of 5000
    • Access the app via the 5173 URL
  2. Configure Vite to use port 5000:

    // vite.config.ts
    export default defineConfig({
      server: {
        port: 5000,
        host: '0.0.0.0'  // Required for Codespaces
      }
    })
    

Prevention:

  • Document the correct port in README
  • Add port configuration to Codespaces devcontainer.json
  • Use consistent port across all environments

MIME Type Errors (CSS loaded as JavaScript)

Problem: "Refused to apply style... MIME type ('text/javascript') not a supported stylesheet"

Root Cause: Secondary issue caused by the 502 errors - browser receives error HTML/JS instead of CSS

Solution: Fix the 502 errors first, then this will resolve automatically


Build Warnings

Media Query Syntax Errors

Warnings:

@media (width >= (display-mode: standalone))
                ^-- Unexpected token ParenthesisBlock

Location: Generated CSS output (likely from SCSS processing)

Status: These appear to be Sass compiler issues with media query syntax

Recommended Actions:

  • Review SCSS files for invalid media query syntax
  • Ensure Sass compiler is up to date
  • Consider migrating complex media queries to standard CSS

Quick Troubleshooting Guide

TypeScript Errors

  1. Restart TypeScript Server: Cmd/Ctrl + Shift + P → "TypeScript: Restart TS Server"
  2. Clear Cache: Delete node_modules/.cache and dist
  3. Reinstall: rm -rf node_modules package-lock.json && npm install
  4. Rebuild: npm run build

Dev Server Issues

  1. Check Port: Verify Vite is running and which port it's using
  2. Bind Address: Ensure Vite binds to 0.0.0.0 in Codespaces
  3. Port Forwarding: Confirm correct port is forwarded in Codespaces
  4. Restart Server: Kill and restart the dev server

Build Failures

  1. Check Package Lock: Ensure package-lock.json is in sync
  2. Update Dependencies: Run npm update
  3. Clear Dist: Delete dist folder before building
  4. Check Node Version: Ensure Node 20.x is installed

Monitoring and Prevention

TypeScript Health

  • Run npm run type-check regularly
  • Enable TypeScript strict mode for new code
  • Use Zod for runtime validation of JSON configs

Build Health

  • Set up pre-commit hooks for type checking
  • Run full builds locally before pushing
  • Keep dependencies updated

CSS/SCSS Health

  • Lint SCSS files with stylelint
  • Test builds with production config
  • Migrate away from SCSS mixins in Tailwind-processed files

Summary

Total Errors Fixed: 3 confirmed fixes + 1 pending + documentation for CI/CD and browser issues

Critical Path: All blocking errors for TypeScript compilation have been resolved. The application should now build successfully.

Next Steps:

  1. Verify build passes: npm run build
  2. Update package-lock.json for CI/CD
  3. Configure Codespaces port forwarding
  4. Clear TypeScript cache to resolve StatCard issue

Remaining Work: Address the port mismatch in Codespaces and update CI/CD configuration.