Tracing module resolution
As discussed earlier, the compiler can visit files outside the current folder when resolving a module. This can be hard when diagnosing why a module is not resolved, or is resolved to an incorrect definition. Enabling the compiler module resolution tracing using --traceResolution
provides insight in what happened during the module resolution process.
Let’s say we have a sample application that uses the typescript
module. app.ts
has an import like import * as ts from "typescript"
.
1 2 3 4 5 6 7 | │ tsconfig.json ├───node_modules │ └───typescript │ └───lib │ typescript.d.ts └───src app.ts |
Invoking the compiler with --traceResolution
1 | tsc --traceResolution |
Results in an output as such:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ======== Resolving module 'typescript' from 'src/app.ts' . ======== Module resolution kind is not specified, using 'NodeJs' . Loading module 'typescript' from 'node_modules' folder. File 'src/node_modules/typescript.ts' does not exist. File 'src/node_modules/typescript.tsx' does not exist. File 'src/node_modules/typescript.d.ts' does not exist. File 'src/node_modules/typescript/package.json' does not exist. File 'node_modules/typescript.ts' does not exist. File 'node_modules/typescript.tsx' does not exist. File 'node_modules/typescript.d.ts' does not exist. Found 'package.json' at 'node_modules/typescript/package.json' . 'package.json' has 'typings' field './lib/typescript.d.ts' that references 'node_modules/typescript/lib/typescript.d.ts' . File 'node_modules/typescript/lib/typescript.d.ts' exist - use it as a module resolution result. ======== Module name 'typescript' was successfully resolved to 'node_modules/typescript/lib/typescript.d.ts' . ======== |
Things to look out for
- Name and location of the import
======== Resolving module ‘typescript’ from ‘src/app.ts’. ========
- The strategy the compiler is following
Module resolution kind is not specified, using ‘NodeJs’.
- Loading of typings from npm packages
‘package.json’ has ‘typings’ field ‘./lib/typescript.d.ts’ that references ‘node_modules/typescript/lib/typescript.d.ts’.
- Final result
======== Module name ‘typescript’ was successfully resolved to ‘node_modules/typescript/lib/typescript.d.ts’. ========
Please login to continue.