Skip to content

Module resolution: Imported files are missing from emit when imported via package.json#imports #59843

@hybrist

Description

@hybrist

Demo Repo

https://github.com/jkrems/ts-imports-emit

Which of the following problems are you reporting?

Something else more complicated which I'll explain in more detail

Demonstrate the defect described above with a code sample.

import {indirect} from "#indirect"; // should pull the target module into the emit, just like a direct import would

Run tsc --showConfig and paste its output here

{
    "compilerOptions": {
        "module": "preserve",
        "moduleResolution": "bundler",
        "rootDir": "./src",
        "outDir": "./dist",
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true,
        "resolvePackageJsonExports": true,
        "resolvePackageJsonImports": true,
        "resolveJsonModule": true
    },
    "files": [
        "./src/main.ts"
    ],
    "exclude": [
        "/Users/jankrems/code/src/github.com/jkrems/imports-emit/dist"
    ]
}

Run tsc --traceResolution and paste its output here

======== Resolving module './direct' from '/Users/jankrems/code/src/github.com/jkrems/imports-emit/src/main.ts'. ========
Explicitly specified module resolution kind: 'Bundler'.
Resolving in CJS mode with conditions 'import', 'types'.
Loading module as file / folder, candidate module location '/Users/jankrems/code/src/github.com/jkrems/imports-emit/src/direct', target file types: TypeScript, JavaScript, Declaration, JSON.
File '/Users/jankrems/code/src/github.com/jkrems/imports-emit/src/direct.ts' exists - use it as a name resolution result.
======== Module name './direct' was successfully resolved to '/Users/jankrems/code/src/github.com/jkrems/imports-emit/src/direct.ts'. ========
======== Resolving module '#indirect' from '/Users/jankrems/code/src/github.com/jkrems/imports-emit/src/main.ts'. ========
Explicitly specified module resolution kind: 'Bundler'.
Resolving in CJS mode with conditions 'import', 'types'.
File '/Users/jankrems/code/src/github.com/jkrems/imports-emit/src/package.json' does not exist.
Found 'package.json' at '/Users/jankrems/code/src/github.com/jkrems/imports-emit/package.json'.
Using 'imports' subpath '#indirect' with target './src/indirect.js'.
File name '/Users/jankrems/code/src/github.com/jkrems/imports-emit/src/indirect.js' has a '.js' extension - stripping it.
File '/Users/jankrems/code/src/github.com/jkrems/imports-emit/src/indirect.ts' exists - use it as a name resolution result.
'package.json' does not have a 'peerDependencies' field.
Resolving real path for '/Users/jankrems/code/src/github.com/jkrems/imports-emit/src/indirect.ts', result '/Users/jankrems/code/src/github.com/jkrems/imports-emit/src/indirect.ts'.
======== Module name '#indirect' was successfully resolved to '/Users/jankrems/code/src/github.com/jkrems/imports-emit/src/indirect.ts' with Package ID 'imports-emit/src/indirect.ts@1.0.0'. ========
======== Resolving module '@typescript/lib-es5' from '/Users/jankrems/code/src/github.com/jkrems/imports-emit/__lib_node_modules_lookup_lib.es5.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es5' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jankrems/code/src/github.com/jkrems/imports-emit/node_modules/@types' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es5'
Directory '/Users/jankrems/code/src/github.com/jkrems/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es5'
Directory '/Users/jankrems/code/src/github.com/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es5'
Directory '/Users/jankrems/code/src/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es5'
Directory '/Users/jankrems/code/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es5'
Directory '/Users/jankrems/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es5'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es5'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es5'
Loading module '@typescript/lib-es5' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jankrems/code/src/github.com/jkrems/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/src/github.com/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/src/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es5' was not resolved. ========
======== Resolving module '@typescript/lib-decorators' from '/Users/jankrems/code/src/github.com/jkrems/imports-emit/__lib_node_modules_lookup_lib.decorators.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-decorators' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jankrems/code/src/github.com/jkrems/imports-emit/node_modules/@types' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators'
Directory '/Users/jankrems/code/src/github.com/jkrems/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators'
Directory '/Users/jankrems/code/src/github.com/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators'
Directory '/Users/jankrems/code/src/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators'
Directory '/Users/jankrems/code/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators'
Directory '/Users/jankrems/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators'
Loading module '@typescript/lib-decorators' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jankrems/code/src/github.com/jkrems/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/src/github.com/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/src/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-decorators' was not resolved. ========
======== Resolving module '@typescript/lib-decorators/legacy' from '/Users/jankrems/code/src/github.com/jkrems/imports-emit/__lib_node_modules_lookup_lib.decorators.legacy.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-decorators/legacy' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jankrems/code/src/github.com/jkrems/imports-emit/node_modules/@types' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators/legacy'
Directory '/Users/jankrems/code/src/github.com/jkrems/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators/legacy'
Directory '/Users/jankrems/code/src/github.com/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators/legacy'
Directory '/Users/jankrems/code/src/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators/legacy'
Directory '/Users/jankrems/code/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators/legacy'
Directory '/Users/jankrems/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators/legacy'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators/legacy'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators/legacy'
Loading module '@typescript/lib-decorators/legacy' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jankrems/code/src/github.com/jkrems/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/src/github.com/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/src/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-decorators/legacy' was not resolved. ========
======== Resolving module '@typescript/lib-dom' from '/Users/jankrems/code/src/github.com/jkrems/imports-emit/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jankrems/code/src/github.com/jkrems/imports-emit/node_modules/@types' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/Users/jankrems/code/src/github.com/jkrems/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/Users/jankrems/code/src/github.com/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/Users/jankrems/code/src/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/Users/jankrems/code/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/Users/jankrems/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jankrems/code/src/github.com/jkrems/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/src/github.com/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/src/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-dom' was not resolved. ========
======== Resolving module '@typescript/lib-webworker/importscripts' from '/Users/jankrems/code/src/github.com/jkrems/imports-emit/__lib_node_modules_lookup_lib.webworker.importscripts.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-webworker/importscripts' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jankrems/code/src/github.com/jkrems/imports-emit/node_modules/@types' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-webworker/importscripts'
Directory '/Users/jankrems/code/src/github.com/jkrems/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-webworker/importscripts'
Directory '/Users/jankrems/code/src/github.com/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-webworker/importscripts'
Directory '/Users/jankrems/code/src/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-webworker/importscripts'
Directory '/Users/jankrems/code/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-webworker/importscripts'
Directory '/Users/jankrems/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-webworker/importscripts'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-webworker/importscripts'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-webworker/importscripts'
Loading module '@typescript/lib-webworker/importscripts' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jankrems/code/src/github.com/jkrems/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/src/github.com/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/src/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-webworker/importscripts' was not resolved. ========
======== Resolving module '@typescript/lib-scripthost' from '/Users/jankrems/code/src/github.com/jkrems/imports-emit/__lib_node_modules_lookup_lib.scripthost.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-scripthost' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jankrems/code/src/github.com/jkrems/imports-emit/node_modules/@types' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/Users/jankrems/code/src/github.com/jkrems/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/Users/jankrems/code/src/github.com/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/Users/jankrems/code/src/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/Users/jankrems/code/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/Users/jankrems/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Loading module '@typescript/lib-scripthost' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jankrems/code/src/github.com/jkrems/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/src/github.com/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/src/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/code/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jankrems/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-scripthost' was not resolved. ========

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

{
  "name": "imports-emit",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "imports": {
    "#indirect": "./src/indirect.js"
  },
  "keywords": [],
  "author": "",
  "license": "MIT",
  "description": "",
  "devDependencies": {
    "typescript": "^5.5.4"
  }
}

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

n/a

Any other comments can go here

I would expect that adding indirection via "imports": {...} would not affect the emit. But I'm not sure if that's WAI.

Metadata

Metadata

Assignees

Labels

BugA bug in TypeScriptFix AvailableA PR has been opened for this issue

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions