将 PeerJs 导入 NextJs

Pri*_*riz 1 javascript reactjs peerjs next.js

所以我正在学习 NextJs 并尝试构建一个音频聊天应用程序,当我尝试导入时我陷入困境PeerJs

它抛出一个窗口未定义错误。

import Peer from 'peerjs';

export default function Home() {

useEffect(() => {
  const myPeer = new Peer(undefined, {
    host: '/',
    port: '3001'
  })
}, [])
}
Run Code Online (Sandbox Code Playgroud)

sea*_*ong 8

这是因为使用 nextjs,代码首先在服务器端进行评估(渲染为 HTML)。现阶段,window尚未定义。这可能是因为对等 js 在导入过程中执行了一些副作用。要解决此问题,您可以使用动态导入:

useEffect(() => {
  import('peerjs').then(({ default: Peer }) => {
    // Do your stuff here
  });
}, [])
Run Code Online (Sandbox Code Playgroud)