401 Unauthorized 클라이언트 오류 상태 응답 코드는 해당 리소스에 유효한 인증 자격 증명이 없기 때문에 요청이 적용되지 않았음을 나타냅니다.
출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Status/401

이를 통해 401 에러, 즉 접근 권한 에러가 발생했다는 것을 깨달은 이후 코드에 어떤 부분이 접근 권한 에러를 발생할 수 있을지를 고심해보았다. 코드상 권한 관련 부분은 API key밖에 없어서 코드를 더 유심히 보니 API key를 보호하기 위한 환경 변수명이 문제였다. 한 팀원이 API key에 대한 환경 변수명을 달리 했던 것이다. Next.js로 작업했던 우리 팀은 환경 변수들, 특히 API key를 env.local에 저장했지만 이 파일은 .gitignore 파일에 속해있기 때문에, 즉 깃허브에 올라가지 않기 때문에 merge할 때도 통일을 할 수가 없었다. 이후 환경 변수 명을 바꿨더니 접근 권한 에러가 해결되었다. 코드는 다음과 같다.//fetch로 호출 (에러 발생)
const { results: trending } = await (
await fetch(
`${BASE_URL}/trending/movie/day?api_key=${process.env.API_KEY}&language=ko&include_adult=true`
)
).json();
//Axios로 호출 (에러 발생)
const res = await axios.get(
`${BASE_URL}/trending/movie/day?api_key=${process.env.API_KEY}&language=ko&include_adult=true`
);
const trending = res.data.results;
//해결 후 (axios든, fetch로 하든 환경 변수명만 바꾸면 잘 작동함)
const { results: trending } = await(
await fetch(
`${BASE_URL}/trending/movie/day?api_key=${process.env.NEXT_PUBLIC_API_KEY}&language=ko&include_adult=true`
)
).json();