Skip to content

Module resolution: Extension required when moduleResolution=bundler and imports/exports used #63162

@polson136

Description

@polson136

Demo Repo

https://github.com/polson136/ts-repro

Which of the following problems are you reporting?

The module specifier resolves at runtime, but not at build time

Demonstrate the defect described above with a code sample.

import internalFoo from '#src/imported-file'; // in ts, fails unless it has a .js extension. Works in vite
import externalFoo from 'ts-repro/imported-file'; // in ts, fails unless it has a .js extension. Works in vite

Run tsc --showConfig and paste its output here

{
    "compilerOptions": {
        "noEmit": true,
        "target": "es2022",
        "module": "esnext",
        "moduleResolution": "bundler"
    },
    "files": [
        "./src/example.ts",
        "./src/imported-file.ts"
    ],
    "include": [
        "src/**/*.ts"
    ]
}

Run tsc --traceResolution and paste its output here

======== Resolving module '#src/imported-file' from '/home/polson/drw/ts-repro/src/example.ts'. ========
Explicitly specified module resolution kind: 'Bundler'.
Resolving in CJS mode with conditions 'import', 'types'.
File '/home/polson/drw/ts-repro/src/package.json' does not exist.
Found 'package.json' at '/home/polson/drw/ts-repro/package.json'.
Using 'imports' subpath '#src/' with target './src/imported-file'.
Import specifier '#src/imported-file' does not exist in package.json scope at path '/home/polson/drw/ts-repro'.
File '/home/polson/drw/ts-repro/src/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/package.json' exists according to earlier cached lookups.
Loading module '#src/imported-file' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/home/polson/drw/ts-repro/src/node_modules' does not exist, skipping all lookups in it.
Directory '/home/polson/drw/ts-repro/node_modules/@types' does not exist, skipping all lookups in it.
Directory '/home/polson/drw/node_modules' does not exist, skipping all lookups in it.
Directory '/home/polson/node_modules' does not exist, skipping all lookups in it.
Directory '/home/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
Searching all ancestor node_modules directories for fallback extensions: JavaScript, JSON.
Directory '/home/polson/drw/ts-repro/src/node_modules' does not exist, skipping all lookups in it.
Directory '/home/polson/drw/node_modules' does not exist, skipping all lookups in it.
Directory '/home/polson/node_modules' does not exist, skipping all lookups in it.
Directory '/home/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '#src/imported-file' was not resolved. ========
======== Resolving module 'ts-repro/imported-file' from '/home/polson/drw/ts-repro/src/example.ts'. ========
Explicitly specified module resolution kind: 'Bundler'.
Resolving in CJS mode with conditions 'import', 'types'.
File '/home/polson/drw/ts-repro/src/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/package.json' exists according to earlier cached lookups.
Using 'exports' subpath './
' with target './src/imported-file'.
Export specifier './imported-file' does not exist in package.json scope at path '/home/polson/drw/ts-repro'.
Using 'exports' subpath './*' with target './src/imported-file'.
Export specifier './imported-file' does not exist in package.json scope at path '/home/polson/drw/ts-repro'.
Loading module 'ts-repro/imported-file' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/home/polson/drw/ts-repro/src/node_modules' does not exist, skipping all lookups in it.
Directory '/home/polson/drw/ts-repro/node_modules/@types' does not exist, skipping all lookups in it.
Directory '/home/polson/drw/node_modules' does not exist, skipping all lookups in it.
Directory '/home/polson/node_modules' does not exist, skipping all lookups in it.
Directory '/home/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
Searching all ancestor node_modules directories for fallback extensions: JavaScript, JSON.
Directory '/home/polson/drw/ts-repro/src/node_modules' does not exist, skipping all lookups in it.
Directory '/home/polson/drw/node_modules' does not exist, skipping all lookups in it.
Directory '/home/polson/node_modules' does not exist, skipping all lookups in it.
Directory '/home/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name 'ts-repro/imported-file' was not resolved. ========
======== Resolving module './imported-file' from '/home/polson/drw/ts-repro/src/example.ts'. ========
Explicitly specified module resolution kind: 'Bundler'.
Resolving in CJS mode with conditions 'import', 'types'.
Loading module as file / folder, candidate module location '/home/polson/drw/ts-repro/src/imported-file', target file types: TypeScript, JavaScript, Declaration, JSON.
File '/home/polson/drw/ts-repro/src/imported-file.ts' exists - use it as a name resolution result.
======== Module name './imported-file' was successfully resolved to '/home/polson/drw/ts-repro/src/imported-file.ts'. ========
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist.
Found 'package.json' at '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json'.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/lib/package.json' does not exist according to earlier cached lookups.
File '/home/polson/drw/ts-repro/node_modules/.pnpm/typescript@6.0.0-dev.20260218/node_modules/typescript/package.json' exists according to earlier cached lookups.
src/example.ts:1:25 - error TS2307: Cannot find module '#src/imported-file' or its corresponding type declarations.

1 import internalFoo from '#src/imported-file'; // in ts, fails unless it has a .js extension. Works in vite
~~~~~~~~~~~~~~~~~~~~

src/example.ts:2:25 - error TS2307: Cannot find module 'ts-repro/imported-file' or its corresponding type declarations.

2 import externalFoo from 'ts-repro/imported-file'; // in ts, fails unless it has a .js extension. Works in vite
~~~~~~~~~~~~~~~~~~~~~~~~

Found 2 errors in the same file, starting at: src/example.ts:1

Paste the package.json of the importing module, if it exists

{
  "name": "ts-repro",
  "version": "1.0.0",
  "scripts": {
    "build": "vite build",
    "check": "tsc"
  },
  "imports": {
    "#src/*": "./src/*"
  },
  "exports": {
    "./*": "./src/*"
  },
  "packageManager": "pnpm@10.22.0",
  "devDependencies": {
    "typescript": "6.0.0-dev.20260218",
    "vite": "^7.3.1"
  }
}

Paste the package.json of the target module, if it exists

same as importing

Any other comments can go here

The reason why I care is that I'm writing a react app with a mixture of .ts and .tsx files, so I can't just use "./src/*.ts" because tsx files won't match

I found some doc references that seem relevant:

  • According to the docs: "--moduleResolution bundler attempts to model the module resolution behavior common to most JavaScript bundlers". There is clearly a divergence between the bundler behavior and the typescript behavior
  • The module resolution docs say that "Like node16 and nodenext, this mode supports package.json "imports" and "exports", but unlike the Node.js resolution modes, bundler never requires file extensions on relative paths in imports", which is wonderfully ambiguous about this edge case
  • I found one doc that says TypeScript’s implementation for resolving a module specifier through "exports" to a file path follows Node.js exactly, which seems to agree that the "actual behavior" described above is the desired behavior, but this seems really weird. I would expect it to match the bundler behavior when moduleResolution=bundler

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions