module-resolution-bundler.md
2.15 KB
title: moduleResolution Bundler Migration Issues
impact: HIGH
impactDescription: fixes "Cannot find module" errors after @vue/tsconfig upgrade
type: capability
tags: moduleResolution, bundler, tsconfig, vue-tsconfig, node, esm
moduleResolution Bundler Migration Issues
Impact: HIGH - fixes "Cannot find module" errors after @vue/tsconfig upgrade
Recent versions of @vue/tsconfig changed moduleResolution from "node" to "bundler". This can break existing projects with errors like "Cannot find module 'vue'" or issues with resolveJsonModule.
Symptoms
-
Cannot find module 'vue'or other packages Option '--resolveJsonModule' cannot be specified without 'node' module resolution- Errors appear after updating
@vue/tsconfig - Some third-party packages no longer resolve
Root Cause
moduleResolution: "bundler" requires:
- TypeScript 5.0+
- Packages to have proper
exportsfield in package.json - Different resolution rules than Node.js classic resolution
Fix
Option 1: Ensure TypeScript 5.0+ everywhere
npm install -D typescript@^5.0.0
In monorepos, ALL packages must use TypeScript 5.0+.
Option 2: Add compatibility workaround
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "bundler",
"resolvePackageJsonExports": false
}
}
Setting resolvePackageJsonExports: false restores compatibility with packages that don't have proper exports.
Option 3: Revert to Node resolution
{
"compilerOptions": {
"moduleResolution": "node"
}
}
Which Packages Break?
Packages break if they:
- Lack
exportsfield in package.json - Have incorrect
exportsconfiguration - Rely on Node.js-specific resolution behavior
Diagnosis
# Check which resolution is being used
cat tsconfig.json | grep moduleResolution
# Test if a specific module resolves
npx tsc --traceResolution 2>&1 | grep "module-name"