MelonBlog

next dev 正常但是 next build 报错该怎么处理?

在写 next.js 的时候经常会遇到 next dev 启动是正常的,但是next build 构建的时候就报错,一般这种情况是因为 第三方库不支持 ssr 导致的。解决起来也很简单,接触 next 的 dynamic 功能,动态加载三方库里的组件就好了。

dynamic

dynamic 本身是用来动态加载客户端组件的,例如某些组件在用户交互之后才需要加载,这样能够加速页面渲染的速度。

使用方法

导入 next/dynamic,并使用 dynamic 函数创建组件

// pages/index.js
import dynamic from 'next/dynamic'
 
export const DynamicComponent = dynamic(() => import('组件路径'))

例子🌰

next.js 集成 editorjs 的时候,构建时就会报错,因为 editorjs 使用了 浏览器 api,所以通过 dynamic 并禁用 ssr 来加载 editorjs 就能够正常构建了

import dynamic from "next/dynamic";
export const Editor = dynamic(() => import('@/components/base/Editor'), {
    ssr: false,
})