Next踩坑之antd的DatePicker国际化报错问题

664 阅读1分钟

先上报错信息

Server Error

SyntaxError: Cannot use import statement outside a module

为何遇到这个报错

  • 主要是使用antdDatePicker遇到的
import zhCN from 'antd/es/date-picker/locale/zh_CN';

...some code

<DatePicker.RangePicker ... locale={locale}  />

如何解决这个问题

  • 使用next提供的 动态导入
const [locale, setLocale] = React.useState<any>()

React.useEffect(()=> {
    (async ()=> {
      const zh_CN = (await import('antd/es/date-picker/locale/zh_CN')).default
      const en_US = (await import('antd/es/date-picker/locale/en_US')).default
      setLocale(lang === 'en' ? en_US : zh_CN)
    })()
}, [])

...some code

<DatePicker.RangePicker ... locale={locale}  />

猜测报错原因

  • 可能是antd的这个东西,哪块地方获取浏览器有的东西,导致服务端渲染的时候出错了吧。不太清楚。有懂的大佬可以指点一下么? hhh