# JS 오류로 인해 비디오 파일 업로드 실패

**URL:** https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363
**Category:** Bug
**Tags:** uploads, fixed
**Created:** [8월 20, 2024, 1:24오전 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363 "2024-08-20T01:24:43Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![dubwoc](https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/32.png) [@dubwoc](https://meta.discourse.org/u/dubwoc)
#### Post date: [8월 20, 2024, 1:24오전 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/1 "2024-08-20T01:24:43Z")

</div>

일반적으로 Discourse는 비디오 업로드를 위한 플랫폼이 아니라는 것을 알고 있습니다. 하지만, 제가 겪고 있는 문제를 해결할 방향을 알려줄 사람이 있을까 해서 문의드립니다.

일부 비디오 파일을 업로드하면 “업로드 중 100%” 상태에 무한정 멈추게 됩니다. 사용자가 취할 수 있는 유일한 조치는 페이지를 새로고침하거나 게시물을 닫는 것입니다. 얼마나 오래 기다리거나 파일 크기가 얼마나 작든 관계없이 이 현상은 반복됩니다.

명백히 어떤 형태의 검증이나 체크 코드가 파일을 멈추게 하고 있는데, 저는 Ruby on Rails / Discourse 개발에 아직 초보라 파일이 어디에서 막히는지 파악하지 못했습니다. 다만, 사용자에게는 매우 불편한 방법이지만 이 문제를 우회하여 파일을 문제없이 업로드하는 방법은 찾았습니다.

같은 파일을 파일 확장자를 .mp4에서 .pdf로 변경하여 업로드하면 아무 문제 없이 업로드가 완료되며, 실제로도 올바른 확장자로 추가됩니다.

예를 들어,  
PXL\_12234563421LS.mp4로 업로드하면 파일이 무한정 멈추지만, PXL\_12234563421LS.pdf로 업로드하면 업로드가 완료되고 게시물에 올바른 비디오 마크다운이 삽입됩니다:

```plaintext
![PXL_20200811_12234563421LS|video](upload://sxVpgLrc3L2MukaD5eS5QOgPY7j.mp4)

```

이 처리 경로에 익숙하신 분이 이 현상의 원인을 설명해 주실 수 있을까요? 그리고 어딘가에서 이 기능을 비활성화할 방법이 있을까요? 또한, 문제의 정확한 위치를 파악하여 버그를 보고하는 것도 기꺼이 도와주실 수 있습니다. 조금의 가이드라인만 주신다면요.

감사합니다.

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [8월 20, 2024, 10:46오전 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/2 "2024-08-20T10:46:42Z")

</div>

아마도 인터넷 문제일 수 있습니다.  
하지만 보통 페이지를 새로고침하면 해결되며, 영상을 업로드할 수 있습니다.

---

<div class="post-metadata">

### Author: ![dubwoc](https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/32.png) [@dubwoc](https://meta.discourse.org/u/dubwoc)
#### Post date: [8월 20, 2024, 12:02오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/3 "2024-08-20T12:02:26Z")

</div>

답변은 감사하지만, 이것은 인터넷 문제가 아닙니다. 모든 컴퓨터와 브라우저에서 발생하고 있습니다. 이 디스코urs 인스턴스가 실행 중인 네트워크에서 업로드하고 있으므로, 인터넷으로 전송되는 것이 아닙니다.

원본 파일이 여전히 "업로드 중"인 동일한 게시물에서 확장자를 변경했을 때 업로드가 성공했다는 사실은, 디스코urs에서 비디오 파일에 대해 실행되는 코드가 특정 파일을 영원히 처리하지 못하고 있다는 점을 분명히 시사합니다.

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [8월 20, 2024, 2:51오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/4 "2024-08-20T14:51:22Z")

</div>

콘솔에 표시되는 오류가 있나요?

try.discourse.org에 영상을 업로드해 주시겠어요?

---

<div class="post-metadata">

### Author: ![putty](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/putty/32/370902_2.png) [@putty](https://meta.discourse.org/u/putty)
#### Post date: [8월 20, 2024, 3:43오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/5 "2024-08-20T15:43:07Z")

</div>

파일 크기가 얼마나 되나요? 최대 파일 크기는 30MB라고 알고 있습니다.

모바일인지 PC인지도 물어볼 뻔했지만, 아래에서 컴퓨터를 언급하고 있으니 필요 없겠네요.

---

<div class="post-metadata">

### Author: ![dubwoc](https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/32.png) [@dubwoc](https://meta.discourse.org/u/dubwoc)
#### Post date: [8월 20, 2024, 6:23오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/6 "2024-08-20T18:23:22Z")

</div>

try.discourse.org에서 이 작업을 시도해 보았지만, .mp4 파일이 허용되지 않아 죄송합니다. 원래 게시글에 이를 언급했어야 했는데 그러지 못했습니다.

또한, 이 파일은 8메가바이트밖에 되지 않는 작은 파일입니다. 파일 크기는 문제가 되지 않는 것으로 확인되었습니다.

콘솔에서 에러가 발생하는지 여부에 대해 말씀하셨을 때, 저는 로그를 보고 있는데 업로드가 시작된 후 해당 이벤트에 대해 아무것도 표시되지 않습니다. 제가 봐야 할 다른 콘솔이 따로 있는 건가요?

---

<div class="post-metadata">

### Author: ![dubwoc](https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/32.png) [@dubwoc](https://meta.discourse.org/u/dubwoc)
#### Post date: [8월 20, 2024, 6:25오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/7 "2024-08-20T18:25:06Z")

</div>

모바일과 PC 모두 동일한 문제가 발생하며, 이는 분명히 생성된 파일 자체에 관련된 문제입니다. ffmpeg로 파일을 다시 인코딩하면 문제도 사라집니다. 또한 Chrome과 Firefox를 모두 시도해 보았지만 두 브라우저 모두 동일한 문제가 나타났습니다.

명확히 말씀드리면, 제가 하는 일은 단순히 파일명을 "movie.mp4"에서 "movie.pdf"로 변경하는 것뿐인데, 그렇게 하면 갑자기 "업로드 100%"에서 멈추지 않고 정상적으로 업로드가 됩니다.

파일 크기는 8MB이며, 이 문제가 나타나는 영화 파일은 크기에 관계없이 다양합니다. 업로드 과정에서 이 파일이 어떤 경로를 거치는지 파악하고 추적할 수 있다면, 어디서 막히는지를 좁혀낼 수 있을 것입니다.

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [8월 20, 2024, 6:39오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/8 "2024-08-20T18:39:46Z")

</div>

> [@dubwoc](#):
>
> 거기에는 mp4 파일이 허용되지 않습니다

지금 시도해 보세요. 방금 추가했거든요.

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [8월 20, 2024, 6:40오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/9 "2024-08-20T18:40:17Z")

</div>

> [@dubwoc](#):
>
> 콘솔에서 에러가 발생했는지 여부에 대해 말씀하셨을 때, 저는 로그를 확인하고 있는데 업로드가 시작되고 나서 해당 이벤트에 대해 더 이상 아무것도 표시되지 않습니다. 제가 확인해야 할 콘솔이라고 해서 다른 곳이 있는 건가요?

브라우저 콘솔을 말씀하신 건데, 거기에 아무것도 표시되지 않나요? 아니면 서버 로그(`/logs`)에 표시되나요?

---

<div class="post-metadata">

### Author: ![dubwoc](https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/32.png) [@dubwoc](https://meta.discourse.org/u/dubwoc)
#### Post date: [8월 20, 2024, 6:59오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/10 "2024-08-20T18:59:13Z")

</div>

좋아요, 해당 환경에서 재현할 수 있었습니다. 조금 더 작은 예제를 찾아야 했지만, 충분한 예제가 있으니 괜찮습니다 🙂

첫 번째 사진은 .mp4 확장자로 파일을 업로드하는 모습을 보여줍니다. 아무리 기다려도 "업로드 중 100%"에 멈춰 있습니다. 스크린샷을 찍기 전에 5분 정도 기다렸습니다.

try.discourse.org에서 게시물을 열어 두었고, “업로드 중 100%” 상태에 머물러 있습니다. 사용자: testdub. 이것이 도움이 된다면 좋습니다. 회신이 올 때까지 열어 둘 것입니다.

PDF는 허용하지 않지만 TXT는 허용하므로, 파일명을 .txt로 변경했을 때 업로드가 완료되었습니다.

같은 파일을 .txt 확장자로 업로드하면 몇 초 만에 완료되고 비디오 마크다운으로 표시됩니다.

 ![2024-08-20-145002_screenshot](https://global.discourse-cdn.com/meta/original/4X/3/7/5/3755dafe0ef80c452052b4a13edcf02e29a634c1.png)  
 ![2024-08-20-145021_screenshot](https://global.discourse-cdn.com/meta/original/4X/2/6/d/26d4fc65af7ad54d4d9c45f4ef881d1a20d4803f.png)

참고로 업로드한 파일들의 md5 값은 다음과 같습니다:

```plaintext
62b865b29c47acbce859c27246c0d7c3 PXL_20240812_174504425.LS.mp4
62b865b29c47acbce859c27246c0d7c3 PXL_20240812_174504425.LS.txt

```

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [8월 20, 2024, 7:06오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/11 "2024-08-20T19:06:35Z")

</div>

해당 파일을 업로드할 때 브라우저 콘솔에서 확인되는 오류입니다:

![image](https://cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/2/6/9/269b4579fdefdb0cda9483b4057b517155ee38f6_2_690x20.png)

```plaintext
Uncaught IndexSizeError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.
    at composer-video-thumbnail-uppy.js:80:31

```

[8998f3f964284f7e0ab4007836dbddd736757617.mp4.gz](https://meta.discourse.org/uploads/short-url/gGxV8ZhB9yAf1DAx9DiRZLRGzDW.gz) (3.3 MB)

이것은 클라이언트 측에서 수정해야 할 문제입니다.

---

<div class="post-metadata">

### Author: ![dubwoc](https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/32.png) [@dubwoc](https://meta.discourse.org/u/dubwoc)
#### Post date: [8월 20, 2024, 7:07오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/12 "2024-08-20T19:07:46Z")

</div>

네, 감사합니다, 마이클!

나도 비슷한 내용으로 답장하고 있었는데:

* * *

파이어폭스의 콘솔을 보면 이런 내용이 보입니다:

Media resource blob:[devsite.net](https://devsite.net/77e697fe-2ebc-489c-bef3-036d45b9908b) could not be decoded, error: Error Code: NS\_ERROR\_DOM\_MEDIA\_METADATA\_ERR (0x806e0006)

크롬에서는 여기서 무슨 일이 일어나고 있는지 더 잘 파악할 수 있는, 아마도 더 나은 에러 메시지가 표시됩니다:

```plaintext
Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.
    at https://devsite.net/assets/chunk.d340137c92abde91812c.d41d8cd9.js:74:3649

```

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [8월 20, 2024, 7:35오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/14 "2024-08-20T19:35:51Z")

</div>

저도 WordPress에서 비슷한 문제를 겪었습니다. 그 후 MP4 파일이 손상되었습니다. 짧은 MP4 파일은 문제없이 업로드되었으니, MP4 파일 자체나 그 파일을 생성한 프로세스를 확인해 보는 것이 좋겠습니다.

---

<div class="post-metadata">

### Author: ![Dev\_Kaique](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dev_kaique/32/442519_2.png) [@Dev\_Kaique](https://meta.discourse.org/u/Dev_Kaique)
#### Post date: [8월 20, 2024, 9:30오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/19 "2024-08-20T21:30:36Z")

</div>

해결하셨나요?

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [8월 21, 2024, 8:33오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/20 "2024-08-21T20:33:28Z")

</div>

네, 수정 사항을 확인 중입니다.

---

<div class="post-metadata">

### Author: ![blake](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/blake/32/157322_2.png) [@blake](https://meta.discourse.org/u/blake)
#### Post date: [8월 22, 2024, 8:14오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/21 "2024-08-22T20:14:14Z")

</div>

> [@dubwoc](#):
>
> `Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.`

이 문제의 수정이 이제 적용되었습니다:

> <https://github.com/discourse/discourse/pull/28493>
>
> If we don't get a \`videoWidth\` back for a video don't try and generate a
> thumbna…il for it.
> 
> Also as part of this change I switched getImageData, the function
> throwing the error, to use video.videoWidth instead of canvas.width
> because it's very likely we were setting canvas.width too early before
> the width could be read. Now that we are reading the value inside of the
> setTimeout hopefully we will actually have a width. Just incase we don't
> detect a width we will now exit early instead of throwing an error.
> 
> We only need to check for \`0\` and not null because the value is an
> integer and will always return a 0 if it can't be read. https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement/videoWidth
> 
> See https://meta.discourse.org/t/322363

---

<div class="post-metadata">

### Author: ![dubwoc](https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/32.png) [@dubwoc](https://meta.discourse.org/u/dubwoc)
#### Post date: [8월 23, 2024, 2:37오전 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/22 "2024-08-23T02:37:34Z")

</div>

Blake님, 이렇게 빠르게 처리해 주셔서 감사합니다! 테스트해 보니 Chrome에서는 잘 작동하지만, Firefox에서는 작동하지 않습니다. 여전히 "Uploading 100%"에서 멈추고, 콘솔에 다음과 같은 오류가 표시됩니다:

```plaintext
Media resource blob:https://devsite.net/a2deff66-3376-4c6e-9cca-f18275c312ce could not be decoded.
Media resource blob:https://devsite.net/a2deff66-3376-4c6e-9cca-f18275c312ce could not be decoded, error: Error Code: NS_ERROR_DOM_MEDIA_METADATA_ERR (0x806e0006)

```

Firefox 129.0.2에서 테스트했습니다.

추가로 제공해 드릴 정보가 있다면 알려 주세요.

---

<div class="post-metadata">

### Author: ![blake](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/blake/32/157322_2.png) [@blake](https://meta.discourse.org/u/blake)
#### Post date: [8월 23, 2024, 10:02오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/23 "2024-08-23T22:02:55Z")

</div>

[이 수정](https://github.com/discourse/discourse/pull/28523)으로 해결될 것입니다. 이 경우 해당 비디오에 썸네일이 생성되지 않지만, 이번에는 업로드 자체는 막히지 않을 것입니다.

---

<div class="post-metadata">

### Author: ![dubwoc](https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/32.png) [@dubwoc](https://meta.discourse.org/u/dubwoc)
#### Post date: [8월 24, 2024, 10:20오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/24 "2024-08-24T22:20:38Z")

</div>

감사합니다. Firefox로 성공적으로 업로드했습니다. 빠른 답변과 후속 조치에 진심으로 감사드립니다!

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [8월 27, 2024, 10:21오후 UTC](https://meta.discourse.org/t/uploading-of-video-file-fails-due-to-js-error/322363/25 "2024-08-27T22:21:12Z")

</div>

이 주제는 마지막 답변 후 3일이 지나면 자동으로 닫힙니다. 새로운 답변은 더 이상 허용되지 않습니다.
