11월 17일에 대하여
2025-11-17
오늘 한 일
1. dev log 캘린더 → 상세 페이지 트러블슈팅
배운 점
1. slug 생성 방식 불일치
[배경] 기존 getSlugFromPath 문제
export const getSlugFromPath = (path: string): string => {
return (
path
.split("/")
.filter(Boolean)
.pop()
?.replace(/\.(md|mdx)$/, "") || ""
);
};
- dev-logs/2025/11/14.md → “14” 로만 변환됨.
- 즉, 캘린더에서 만든 URL은 /dev-logs/14/ 같은 형태.
[원인]
하지만 캘린더는 /dev-logs/14/로 보내고, Astro는 /dev-logs/2025/11/14/만 만들어둔 상태라 라우팅이 안 맞아서 404/에러 발생하게 된 거 였음.
getCollection(“dev-logs”)로 받아온 타입이 여러 컬렉션의 유니온 타입으로 잡혀 있고, 그 안에 slug 필드는 정의되지 않은 상태였음.
그래서 i.slug는 타입상 존재하지 않는 필드라 TS가 막고 있었음.
[해결 방법]
결국 slug를 믿지 말고, 항상 id를 기준으로 slug를 만들어 쓰는 쪽으로 방향 정리함.
추후 계획
회고
간단한 이슈인데, 많이 헤매었음.