Build Error Analysis
This content is not available in your language yet.
에러 메시지 분석
섹션 제목: “에러 메시지 분석”✘ [ERROR] No matching export in "src/lib/domain.ts" for import "validateDomainId"
src/lib/queue/seed-queue-handlers.ts:11:46: 11 │ ...in, deduplicateDomains, validateDomainId, generateDomainHash } ...문제점
섹션 제목: “문제점”위치: src/lib/queue/seed-queue-handlers.ts:11
에러 내용:
validateDomainId를src/lib/domain.ts에서 import하려고 시도- 하지만
src/lib/domain.ts는validateDomainId를 export하지 않음
현재 코드:
import { normalizeDomain, deduplicateDomains, validateDomainId, // ❌ domain.ts에 없음 generateDomainHash} from '../domain';근본 원인 분석
섹션 제목: “근본 원인 분석”1. 함수 위치 확인
섹션 제목: “1. 함수 위치 확인”validateDomainId는 다음 위치에 존재:
- ✅
src/schemas/common.ts(line 174) - ✅
src/schemas/domain.ts(line 64)
2. src/lib/domain.ts의 역할
섹션 제목: “2. src/lib/domain.ts의 역할”src/lib/domain.ts는:
- ✅
validateDomainId를src/schemas/common.ts에서 import하여 사용 - ❌
validateDomainId를 export하지 않음
import { validateDomainId, CountryCode } from '../schemas/common'; // import만 함
// validateDomainId를 사용하지만 export하지 않음export function createSeedIdentity(domainId: string, contentType: string) { if (!validateDomainId(domainId)) { // 사용만 함 throw new Error(`Invalid domain ID format: ${domainId}`); } // ...}3. 모듈 구조 문제
섹션 제목: “3. 모듈 구조 문제”현재 구조:
src/lib/domain.ts ├─ import validateDomainId from schemas/common (사용만) └─ export normalizeDomain, deduplicateDomains, generateDomainHash
src/lib/queue/seed-queue-handlers.ts └─ import validateDomainId from lib/domain ❌ (존재하지 않음)올바른 구조:
src/schemas/domain.ts └─ export validateDomainId ✅
src/lib/queue/seed-queue-handlers.ts └─ import validateDomainId from schemas/domain ✅해결 방안
섹션 제목: “해결 방안”방안 1: 스키마에서 직접 import (권장)
섹션 제목: “방안 1: 스키마에서 직접 import (권장)”이유:
validateDomainId는 스키마 검증 함수이므로 스키마 모듈에 있는 것이 적절- 모듈 책임 분리:
lib/domain.ts는 정규화 로직,schemas/domain.ts는 검증 로직 - 기존 코드와의 일관성 유지
수정 내용:
// Beforeimport { normalizeDomain, deduplicateDomains, validateDomainId, // ❌ generateDomainHash} from '../domain';
// Afterimport { normalizeDomain, deduplicateDomains, generateDomainHash} from '../domain';import { validateDomainId } from '../../schemas/domain'; // ✅방안 2: lib/domain.ts에서 re-export
섹션 제목: “방안 2: lib/domain.ts에서 re-export”이유:
- 모든 domain 관련 함수를 한 곳에서 import 가능
- 편의성 향상
단점:
- 모듈 책임이 모호해짐 (정규화 + 검증)
- 스키마 검증 함수가 lib에 있는 것처럼 보임
수정 내용:
// 기존 importimport { validateDomainId, CountryCode } from '../schemas/common';
// re-export 추가export { validateDomainId }; // ✅방안 3: schemas/common.ts에서 import
섹션 제목: “방안 3: schemas/common.ts에서 import”이유:
validateDomainId가common.ts에도 존재- 공통 스키마이므로 적절
단점:
domain.ts에도 동일 함수가 있어 중복- 일관성 문제
권장 해결 방안: 방안 1
섹션 제목: “권장 해결 방안: 방안 1”-
모듈 책임 분리
schemas/domain.ts: 도메인 스키마 및 검증 함수lib/domain.ts: 도메인 정규화 및 변환 로직
-
기존 패턴과 일관성
- 다른 스키마 검증 함수들도
schemas/에서 import - 예:
EnhancedResearchDataset.safeParse()등
- 다른 스키마 검증 함수들도
-
명확한 의존성
- 검증 함수는 스키마 모듈에 속함
- 정규화 함수는 lib 모듈에 속함
수정 파일
섹션 제목: “수정 파일”파일: src/lib/queue/seed-queue-handlers.ts
변경 내용:
// Import 섹션 수정import type { Bindings } from '../../index';import type { SeedQueueMessage } from '../../schemas/seed-engine';import { EnhancedResearchDataset } from '../../schemas/research';import { normalizeDomain, deduplicateDomains, generateDomainHash } from '../domain';import { validateDomainId } from '../../schemas/domain'; // ✅ 추가import type { NormalizedDomain } from '../../schemas/domain';import { buildRawDatasetSuccessPath } from '../r2-seed-engine';import { logError, logger } from '../logger';import { ValidationError } from '../errors';추가 확인 사항
섹션 제목: “추가 확인 사항”1. generateDomainHash 확인
섹션 제목: “1. generateDomainHash 확인”generateDomainHash는 src/lib/domain.ts에 export되어 있는지 확인:
- ✅ 확인됨 (line 160)
2. 다른 import 경로 확인
섹션 제목: “2. 다른 import 경로 확인”src/lib/queue/domain-queue-handlers.ts도 동일한 문제가 있는지 확인:
- ❌
domain-queue-handlers.ts는validateDomainId를 사용하지 않음 - 문제 없음
3. 일관성 확인
섹션 제목: “3. 일관성 확인”다른 파일들에서 validateDomainId를 어떻게 import하는지:
import { validateDomainId } from '../schemas/common'; // ✅
// 다른 파일들도 schemas에서 import하는 패턴예상되는 추가 문제
섹션 제목: “예상되는 추가 문제”Cloudflare Workers 환경 호환성
섹션 제목: “Cloudflare Workers 환경 호환성”src/lib/domain.ts에서 node:crypto 사용:
import { createHash } from 'node:crypto';확인 필요:
wrangler.jsonc에nodejs_compat플래그가 있는지- Cloudflare Workers에서
node:crypto지원 여부
해결 방안 (필요 시):
crypto.subtle사용 (Web Crypto API)- 또는
nodejs_compat플래그 확인
수정 체크리스트
섹션 제목: “수정 체크리스트”-
src/lib/queue/seed-queue-handlers.ts의 import 수정 - 빌드 에러 재확인
- 다른 파일에서 동일한 문제 확인
-
node:crypto호환성 확인 (필요 시)
예상 결과
섹션 제목: “예상 결과”수정 후:
pnpm dev:local# ✅ 빌드 성공# ✅ 모든 import 정상# ✅ 로컬 개발 서버 시작분석 일시: 2026-01-28
에러 타입: Import/Export 불일치
심각도: 중간 (빌드 실패)
해결 난이도: 낮음 (import 경로 수정)