11월 17일에 대하여

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를 만들어 쓰는 쪽으로 방향 정리함.

추후 계획

회고

간단한 이슈인데, 많이 헤매었음.