Post

(TIL) 2025-02-10

(TIL) 2025-02-10

트러블 슈팅


배경

오류 오류

플레이어 공격 기능을 구현하고 기능 테스트를 진행하려던 중에 기존 방에 참여 했을 경우 위와 같은 오류가 발생하였다.

원인/분석

  • 오류가 발생한 코드
1
2
3
this.getUsers().forEach((user) => {
  if (user.socket !== socket) targetUsers.push(user);
});
  • 연관된 메소드
1
2
3
4
// 유저 조회
getUsers() {
  return this.users.values();
}

우선 로그를 보면 TypeError: this.getUsers(...).forEach is not a function 이라고 떳으니 console.log(this.getUser); 를 통해서 어떻게 출력이 되는지 확인을 해보았다.

오류

위 그림과 같이 Iterator 객체로 반환된 것을 알 수 있었다.

결과

MDN-Map MDN-Array

MDN 문서를 보면 foreach 함수는 Map과 Array 객체에서만 사용이 가능하다. 즉 this.getUsers() 는 foreach 기능을 사용 할 수 없는 객체여서 그랬던 것이다.

Array.from() 함수를 이용하여 반환된 Iterator객체를 다시 Array로 변환하여 foreach문을 돌렸더니 해결을 할 수 있었다.

This post is licensed under CC BY 4.0 by the author.