why? : 게더타운의 매트릭스 오류

김고야·2023년 8월 28일
0

Side Project

목록 보기
8/11
post-thumbnail

공부를 위해 접속한 게더타운에서 이런 오류가 생겼다. 브라우져 렌더링을 공부하는 입장에서는 단순히 넘길 수는 없는 일... 개발자 도구를 통해, 에러 메시지를 읽어보고 공부를 해보려고 온갖 검색 수단을 동원했다.

⚠️ 403 Error

Failed to load resource: the server responded with a status of 403 ()
bam.nr-data.net/jserrors/1/NRJS-5c3e5dbb627552c5b58?a=1385902829&sa=1&v=1216.487a282&t=Unnamed%20Transaction&rst=4648934&ck=1&ref=https://app.gather.town/app:1     Failed to load resource: net::ERR_CONNECTION_TIMED_OUT
bam.nr-data.net/events/1/NRJS-5c3e5dbb627552c5b58?a=1385902829&sa=1&v=1216.487a282&t=Unnamed%20Transaction&rst=4648937&ck=1&ref=https://app.gather.town/app:1     Failed to load resource: net::ERR_CONNECTION_TIMED_OUT
cdn.gather.town/storage.googleapis.com/gather-town.appspot.com/internal-dashboard/sounds/BuHpL3aHEyvdbC9bhxsAA#.mp3:1     Failed to load resource: the server responded with a status of 403 ()
cdn.gather.town/storage.googleapis.com/gather-town.appspot.com/internal-dashboard/sounds/BuHpL3aHEyvdbC9bhxsAA#.mp3:1     Failed to load resource: the server responded with a status of 403 ()
Failed to load resource: the server responded with a status of 403 ()

이 오류 메시지는 서버가 요청에 대해 "Forbidden" 상태 코드인 403를 반환하여 리소스를 제공하지 않는다는 것을 알린다. 해당 리소스에 대한 액세스 권한이 없거나 인증이 실패했을 가능성.

Failed to load resource: net::ERR_CONNECTION_TIMED_OUT

서버와의 연결 시도 시간 초과되었다는 의미. 서버가 응답하지 않거나 연결에 문제가 있는 경우 발생. 네트워크 연결 상태를 확인하고, 서버의 상태를 체크해야 함.

Failed to load resource: the server responded with a status of 403 () 

앞서 언급한 것과 동일한 오류 메시지로, 다른 리소스에 대한 액세스 권한이 없거나 인증이 실패했을 가능성...

⚠️ Texture.frame missing

Texture.frame missing: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAYElEQVR42mNggIL/dAYMyAAkcOzaty30xHBHDITlKI4YdcCoA0YdMOqAIesA9LKdrg7AVcHQ3QG4+HRPAwPmgAFLA5T6fPiUAwMeAqNRMOqAUQeMOmB4OGDAO6cD3T0HAP/GVbrBsicTAAAAAElFTkSuQmCC
get @ bundle.bd2c9c8d2835fc0541df.js:2

이미지 데이터가 base64 인코딩된 형태로 제공되고 있다. 이 오류는 웹 페이지나 앱에서 이미지 리소스를 로딩하려 할 때 해당 이미지의 프레임 정보가 누락되어 발생할 수 있다. 프레임 정보는 이미지의 크기와 위치를 나타내는데 사용.

function(t, e, i) {
                var n = i(33)
                  , s = i(0)
                  , r = i(109)
                  , o = i(424)
                  , a = "Texture.frame missing: "
                  , h = new s({
                    initialize: function(t, e, i, n, s) {
                        Array.isArray(i) || (i = [i]),
                        this.manager = t,
                        this.key = e,
                        this.source = [],
                        this.dataSource = [],
                        this.frames = {},
                        this.customData = {},
                        this.firstFrame = "__BASE",
                        this.frameTotal = 0;
                        for (var r = 0; r < i.length; r++)
                            this.source.push(new o(this,i[r],n,s))
                    },
                    add: function(t, e, i, n, s, o) {
                        if (this.has(t))
                            return null;
                        var a = new r(this,t,e,i,n,s,o);
                        return this.frames[t] = a,
                        "__BASE" === this.firstFrame && (this.firstFrame = t),
                        this.frameTotal++,
                        a
                    },
                    remove: function(t) {
                        return !!this.has(t) && (this.get(t).destroy(),
                        delete this.frames[t],
                        !0)
                    },
                    has: function(t) {
                        return this.frames[t]
                    },
                    get: function(t) {
                        t || (t = this.firstFrame);
                        var e = this.frames[t];
                        return e || (console.warn(a + t), // 에러 메시지가 출력되는 라인
                        e = this.frames[this.firstFrame]),
                        e
                    },

에러 메시지가 나오는 코드 라인과 그가 포함된 함수를 발췌 해봤다. 프레임이나 리소스에 관련된 함수인 것 같고, 처음보는 문법 구조라, 이게 어떤 프레임워크 기반인지는 알 수 없지만 get에서 문제가 일어나고 있다는 점을 이해할 수 있다.

⚠️ ChatGPT의 솔루션

- 각 리소스에 대한 액세스 권한을 확인하고 필요한 권한을 설정합니다.
- 네트워크 연결 상태를 점검하고, 서버가 정상적으로 응답하는지 확인합니다. 필요한 경우 인증 토큰이나 인증 정보를 올바르게 제공하여 리소스 요청을 처리합니다.
- 이미지 데이터 확인, 리소스 경로 확인 : 인코딩 불가불 여부.
- 프레임 정보 추가 : 프레임 정보에는 이미지의 위치와 크기 등의 데이터가 포함 되어있고, 부적절하면 렌더링에 실패.
profile
Frontend Engineer

0개의 댓글