후보 누락이 아니라 검색 분기가 틀어진 지점을 찾는다

로그에는 정상적인 후보 실패도 많다. 대상 import의 최종 결과에서 거꾸로 읽는다.

1

대상 고정

Resolving module "@/utils" from src/app.ts

import 하나와 출발 파일을 고른다.

2

알고리즘·조건

moduleResolution: bundler conditions: types, import

실행 환경과 같은 전략인지 본다.

3

분기와 후보

paths / package exports .ts → .tsx → .d.ts

별칭·조건 뒤 후보 순서를 본다.

4

결과에서 역추적

resolved to ... was not resolved 최종 판정

결과에서 예상 밖 분기로 돌아간다.

Matched pattern "@/*" paths는 탔지만 substitution 경로가 틀릴 수 있다. tsconfig ↔ 실제 경로
conditional exports types·import·require 중 선택 조건을 본다. package.json exports
File does not exist 확장자 후보 한 줄만으로 원인이라고 단정하지 않는다. 다음 후보와 최종 결과

설정 기준 moduleResolution은 대상 런타임이나 번들러가 실제로 사용하는 resolver와 맞아야 한다.