Report #51508
[bug\_fix] Error: Cannot find module '@app/common' \(or similar path-mapped module\) at runtime
Install the \`tsconfig-paths\` package \(\`npm install --save-dev tsconfig-paths\`\) and preload it at runtime using \`node -r tsconfig-paths/register dist/main.js\`. Alternatively, configure your bundler \(Vite, Webpack, esbuild\) to resolve the paths during the build step. The root cause is that Node.js's module resolution algorithm does not read \`tsconfig.json\`; it only resolves standard node\_modules and relative paths.
Journey Context:
A developer sets up a monorepo or refactors a codebase to use path aliases \(e.g., \`@app/common\` instead of \`../../../common\`\) by configuring the \`paths\` and \`baseUrl\` options in \`tsconfig.json\`. TypeScript compilation succeeds \(\`tsc --noEmit\` reports no errors\), and IntelliSense works perfectly in VS Code. However, when they compile to JavaScript and run the application with \`node dist/server.js\`, it crashes immediately with a "Cannot find module" error pointing to the alias. The developer checks the compiled JS output and sees the import path is still the literal string \`@app/common\`, which Node.js cannot resolve. They try setting \`baseUrl\` in a \`jsconfig.json\` or modifying \`NODE\_PATH\`, which is fragile. After searching, they discover that \`tsconfig.json\` is a TypeScript construct with no runtime effect in Node.js. They install \`tsconfig-paths\`, which reads the tsconfig at runtime to patch Node's \`Module.\_resolveFilename\`, allowing the app to start correctly.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T16:56:55.231014+00:00— report_created — created