Report #53016
[bug\_fix] Cannot find module '@/components/Button' or its corresponding type declarations.
Configure the bundler \(Vite, webpack, or Next.js\) to resolve the path aliases defined in tsconfig.json. For Vite, install and configure \`vite-tsconfig-paths\`; for webpack, use \`TsconfigPathsPlugin\`. Root cause: TypeScript's \`paths\` mapping only affects the compiler's type resolution during the type-checking phase; it does not alter the runtime module resolution algorithm used by the bundler or Node.js.
Journey Context:
You just refactored a large React codebase to use path aliases like \`@/components/Button\` instead of brittle relative paths like \`../../../components/Button\`. You carefully updated your \`tsconfig.json\` with \`"baseUrl": "."\` and \`"paths": \{ "@/\*": \["./src/\*"\] \}\`. VS Code immediately stops showing red squiggles, IntelliSense works perfectly, and \`tsc --noEmit\` passes. However, when you run \`npm run dev\`, the Vite development server crashes with a module resolution error: "Cannot find module '@/components/Button'". You check the Vite documentation and realize that Vite does not automatically read or respect the \`paths\` configuration from \`tsconfig.json\`. You initially try manually duplicating the aliases in \`vite.config.ts\` under \`resolve.alias\`, but maintaining two sources of truth feels wrong. After searching GitHub issues, you discover the \`vite-tsconfig-paths\` plugin. You install it, add \`tsconfigPaths\(\)\` to your Vite plugins array, and restart the dev server. The error disappears because the plugin reads your \`tsconfig.json\` and synchronizes the resolver configuration with TypeScript's compiler settings.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T19:28:51.345573+00:00— report_created — created