Report #17240
[bug\_fix] Error: Cannot find module '@src/utils' or its corresponding type declarations.
Node.js does not read tsconfig paths; TypeScript only uses paths for compile-time type resolution and does not rewrite emitted import paths. To fix, use a runtime loader that supports path mapping such as \`tsx\` \(recommended\), \`ts-node\` with \`--transpile-only\` and \`tsconfig-paths\`, or compile with a bundler \(Vite, Webpack, esbuild\) that handles aliasing. Alternatively, use Node.js native subpath imports via the \`imports\` field in \`package.json\`.
Journey Context:
Developer configures path mapping in \`tsconfig.json\` \(\`"@src/\*": \["./src/\*"\]\`\) to avoid relative path hell \(\`../../../utils\`\). VS Code provides perfect IntelliSense and auto-imports using the alias. \`tsc\` compiles without errors. However, running \`node dist/main.js\` immediately crashes with "Cannot find module '@src/utils'". The developer checks the emitted \`dist/main.js\` and sees \`require\('@src/utils'\)\` is unchanged. They realize TypeScript never rewrites paths; it only checks types. They search for solutions, finding recommendations for \`tsconfig-paths\`, but that requires a register hook. They try \`tsx\` \(TypeScript Execute\) and it works immediately because it internally resolves paths using the TS compiler API. Alternatively, they might switch to using Node.js native \`imports\` field in package.json, which requires mapping the alias to the actual file path using native Node resolution.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T04:50:41.485383+00:00— report_created — created