Testuję jakiś kod roboczy audio, ładując przykładowy moduł z Github przez audioworklet.addmodule (Githuburl). Jednak kiedy patrzę na kartę sieciową w ustawieniach programisty, nie widzę żądania sieciowego do GitHub. Wiem, że jest to żądanie, ponieważ daje błąd CORS, zanim przełączyłem się na przy użyciu adresu RAW.Gitubusercontent (teraz daje Uncaught (in promise) DOMException: The user aborted a request). Chcę być w stanie sprawdzić, co powraca do połączenia sieciowego, więc mogę pomóc zdiagnozować problem.

0
Andrew 18 październik 2020, 07:57

1 odpowiedź

Najlepsza odpowiedź

Wydaje się, że w Chrome wydaje się błąd, który uniemożliwia żądanie sieci przed pokazaniem na narzędziach Dev. Myślę, że byłoby to dobry pomysł na złożenie błędu.

Na razie możesz po prostu użyć Firefoksa. Pokazuje żądanie sieciowe na narzędziach Dev.

Jeśli chcesz zachować używanie Chrome, możesz proxy swoje żądanie z fetch(), aby pojawić się w DevTools.

Zamiast dzwonić addModule() bezpośrednio ...

context.audioWorklet.addModule(url)

... Możesz najpierw pobrać źródło, a następnie zawijaj go do adresu URL obiektu.

fetch(url)
    .then((response) => response.text())
    .then((text) => {
        const blob = new Blob([text], { type: 'application/javascript; charset=utf-8' });
        const objectUrl = URL.createObjectURL(blob);

        return context.audioWorklet.addModule(objectUrl)
            .finally(() => URL.revokeObjectURL(objectUrl));
    })
1
chrisguttandin 18 październik 2020, 10:00