인프런 커뮤니티 질문&답변

abc2752님의 프로필 이미지
abc2752

작성한 질문수

Node.js에 TypeScript 적용하기(feat. NodeBird)

user, post 라우터 만들기

'S3' 형식에 'S3Client' 형식의 destroy, middlewareStack, send 속성이 없습니다.ts(2739)

작성

·

394

0

안녕하세요 선생님

user, post 라우터 편을 보면서 코드를 작성하던중 에러가 발생해서 문의드립니다.

 

AWS S3 업로드 관련 부분인데

 

AWS.config.update({
  region: 'ap-northeast-2',
  accessKeyId: process.env.S3_ACCESS_KEY_ID,
  secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
});

const upload = multer({
  storage: multerS3({
    s3: new AWS.S3(), 
    // s3 이부분에서 에러가 발생합니다
    bucket: 'react-nodebird',
    key(req, file, cb) {
      cb(null, `original/${+new Date()}${path.basename(file.originalname)}`);
    },
  }),
  limits: { fileSize: 20 * 1024 * 1024 },
});

 

'S3' 형식에 'S3Client' 형식의 destroy, middlewareStack, send 속성이 없습니다.ts(2739)
(property) Options.s3: S3Client
빠른 수정을 사용할 수 없음

 

위와 같은 에러가 발생했습니다.

 

그래서 구글링을 통해 에러를 수정한 코드가 아래와 같은데 이 부분이 올바르게 작성된건지 확인부탁드리고자 질문남깁니다.

 

const upload = multer({
  storage: multerS3({
    s3: new S3Client({
      credentials: {
        accessKeyId: process.env.S3_ACCESS_KEY as string,
        secretAccessKey: process.env.S3_SECRET_KEY as string,
      },
      region: 'ap-northeast-2',
    }),
    bucket: 'react-nodebird',
    key(req, file, cb) {
      cb(null, `original/${+new Date()}${path.basename(file.originalname)}`);
    },
  }),
  limits: { fileSize: 20 * 1024 * 1024 },
});

 

 

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네 multer-s3와 aws-sdk의 버전 호환성 차이였을겁니다.

수정하신 것 맞습니다.

abc2752님의 프로필 이미지
abc2752

작성한 질문수

질문하기