Gatsby를 이용하여 간단한 웹 페이지를 개발하고 있었다.
이 때, Audio를 이용하여 노래를 재생시키려 했는데, 아래와 같은 에러 메세지가 나왔다.

WebpackError: ReferenceError: Audio is not defined

이전에 봤던 것처럼 서버 사이드 렌더링(SSR)로 인해 Audio가 없기 때문에 발생한 문제이다.
따라서 해당 객체가 먼저 정의되어 있는지 확인이 필요하다.

export default function Player({ url, className }) {
    const [playing, setPlaying] = useState(false);
    const [audio] = useState(typeof Audio !== "undefined" && new Audio(url));

    useEffect(() => {
        playing ? audio.play() : audio.pause()

    }, [playing])

  ...
}

typeof Audio !== "undefined" 으로 해당 객체를 먼저 확인하면 기능도 정상 동작하고 빌드도 가능하다.

Reference