크고 작은 문제들/오류

[aws-sdk] Module not found: @aws-sdk/credential-provider-ini tried to access @aws-sdk/client-sts (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.

노새두마리 2024. 9. 22. 23:13

개요

yarn add @aws-sdk/client-s3

Next.js 프로젝트에 aws-sdk(v3) 설치하여 클라이언트에서 S3 관련 작업을 수행하는 경우, peer dependency에 해당하는 모듈을 참조할 수 없습니다.

  • 패키지 매니저: yarn 4.4.1 (3.7.0 정도의 버전을 사용하였을 때에도 동일한 오류 발생)
  • Next.js: 13

https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/getting-started-nodejs.html


원인(추정)

  • node.js(서버) 환경에서 동작하는 것을 목표로 개발된 sdk이기 때문에 브라우저에서 사용 시 코드가 온전히 실행되지 않거나,
  • Next.js 13 사용 시 common js, es module 간의 참조가 정상적으로 이루어지지 않음

해결

1. 반드시 클라이언트에서 요청을 수행해야 하는 경우가 아니라면, Next.js 서버 라우트를 거쳐서 S3 버킷과 관련된 작업을 수행하는 방식을 사용할 수 있습니다.

2. Next.js 버전을 14로 업그레이드하는 경우, 클라이언트 측에서도 정상적으로 요청이 수행됨을 확인하였습니다. (13.5.7 → 14.2.13으로 업그레이드 하였음)