NextJS - window 未定义
NextJS - window is not defined
我正在尝试将 Typewriter Effect 导入我的 NextJS 项目,但每当我这样做时,我都会收到以下错误:
ReferenceError: window is not defined
根据我的阅读,显示错误是因为它试图在服务器端而不是客户端加载库。
所以当我简单地尝试像这样导入它时:
import Typewriter from 'typewriter-effect'
错误会立即显示。
人们建议我尝试这样的事情:
let Typewriter
if (typeof window !== 'undefined') {
Typewriter = require( 'typewriter-effect' )
}
然而,它也不是这样工作的。我收到一条错误消息,内容如下:
Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined.
我已经搜索了很多地方来寻找这个问题的潜在解决方案,但我的尝试一直没有成功。
你需要做的是dynamic import with No SSR
试试这个:
import React, { Component } from 'react';
import dynamic from 'next/dynamic';
const Typewriter = dynamic(
() => import('typewriter-effect'),
{
ssr: false
}
)
class Home extends Component {
render() {
return (
<Typewriter
onInit={(typewriter) => {
typewriter.typeString('Hello World!')
.callFunction(() => {
console.log('String typed out');
})
.pauseFor(2500)
.deleteAll()
.callFunction(() => {
console.log('All strings were deleted');
})
.start();
}}
/>
)
}
}
export default Home;
我正在尝试将 Typewriter Effect 导入我的 NextJS 项目,但每当我这样做时,我都会收到以下错误:
ReferenceError: window is not defined
根据我的阅读,显示错误是因为它试图在服务器端而不是客户端加载库。
所以当我简单地尝试像这样导入它时:
import Typewriter from 'typewriter-effect'
错误会立即显示。
人们建议我尝试这样的事情:
let Typewriter
if (typeof window !== 'undefined') {
Typewriter = require( 'typewriter-effect' )
}
然而,它也不是这样工作的。我收到一条错误消息,内容如下:
Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined.
我已经搜索了很多地方来寻找这个问题的潜在解决方案,但我的尝试一直没有成功。
你需要做的是dynamic import with No SSR
试试这个:
import React, { Component } from 'react';
import dynamic from 'next/dynamic';
const Typewriter = dynamic(
() => import('typewriter-effect'),
{
ssr: false
}
)
class Home extends Component {
render() {
return (
<Typewriter
onInit={(typewriter) => {
typewriter.typeString('Hello World!')
.callFunction(() => {
console.log('String typed out');
})
.pauseFor(2500)
.deleteAll()
.callFunction(() => {
console.log('All strings were deleted');
})
.start();
}}
/>
)
}
}
export default Home;