出现这一错误的原因是,图书馆需要网络信息预报系统,在服务器边的上没有。
阁下:<代码>xterm 试图进入服务器上没有的<代码>window物体。 解决办法是避免在服务器上装载<代码>xterm,并动态地进口该编码,使之只装上客户方。
下面是几个方面实现这一点的。
#1 Using dynamic import()
inside useEffect
Move the import
to your component s useEffect
, then dynamically import the library and add your logic there.
useEffect(() => {
const initTerminal = async () => {
const { Terminal } = await import( xterm )
const term = new Terminal()
// Add logic with `term`
}
initTerminal()
}, [])
#2 Using next/dynamic
with ssr: false
创建一种成分,使您添加<代码>xterm逻辑。
// components/terminal-component
import { Terminal } from xterm
function TerminalComponent() {
const term = new Terminal()
// Add logic around `term`
return <></>
}
export default TerminalComponent
Then dynamically import that component when using it.
import dynamic from next/dynamic
const TerminalComponent = dynamic(() => import( <path-to>/components/terminal-component ), {
ssr: false
})
作为备选案文,在动态地以<代码>next/dynamic进口图书馆时,您可直接添加这一逻辑,以避免为之提供额外档案。
import dynamic from next/dynamic
const Terminal = dynamic(
{
loader: () => import( xterm ).then((mod) => mod.Terminal),
render: (props, Terminal) => {
const term = new Terminal()
// Add logic with `term`
return <></>
}
},
{
ssr: false
}
)