You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Next.js中使用React Circular Progressbar遇类型错误求助

问题排查:react-circular-progressbar 引发的 TypeError 错误

问题详情

已安装 react-circular-progressbar 组件并编写相关代码,但运行时抛出服务端错误:

Server Error
TypeError: Object prototype may only be an Object or null: undefined

相关代码

MyCourses 组件

import React from 'react';
import "../css/myCourses.css"
import { CircularProgressbar } from 'react-circular-progressbar';
import 'react-circular-progressbar/dist/styles.css';

const MyCourses = () => {
    const percentage = 66;
    return (
        <>
            <div className='mt-3'>
                <CircularProgressbar value={percentage} text={`${percentage}%`} />
            </div>
        </>
    );
}

export default MyCourses;

Overview 页面(调用组件)

import React from 'react';
import "../css/overview.css"
import Link from 'next/link';
import Image from 'next/image';
import search from "../../public/images/search.svg"
import MyCourses from '../components/myCourses';
import Planning from '../components/planning';

const Overview = () => {
    return (
        <>
            <div className='overview_container'>
                <p>Hello <b>BRUNO</b>, welcome back!</p>
                <div className='d-flex justify-content-between align-items-baseline'>
                    <div className='heading d-flex align-items-baseline justify-content-between'>
                        <p className='me-4'>My Courses</p>
                        <Link href={'/overview'}>View All</Link>
                    </div>
                    <div className='d-flex'>
                        <Image 
                            src={search}
                            alt="search"
                        />
                        <input className='ms-3' type="text" placeholder='Search...' />
                    </div>
                </div>
                <MyCourses/>
                <Planning/>
            </div>
        </>
    );
}

export default Overview;

解决方案

1. 修复版本兼容性

该错误常因 react-circular-progressbar 新版本与 Next.js SSR 机制冲突导致,降级到稳定兼容版本:

npm install react-circular-progressbar@2.1.0
# 或使用 yarn
yarn add react-circular-progressbar@2.1.0

2. 强制客户端渲染组件

如果版本降级无效,将 MyCourses 设置为仅客户端渲染,避免服务端执行时出错:
修改 Overview 页面的组件导入代码:

// 替换原 import MyCourses from '../components/myCourses';
import dynamic from 'next/dynamic';
const MyCourses = dynamic(() => import('../components/myCourses'), { ssr: false });

3. 重置依赖环境

删除现有依赖文件后重新安装,确保依赖完整性:

rm -rf node_modules package-lock.json yarn.lock
npm install

4. 验证文件路径

确认 ../components/myCourses 路径正确,文件命名大小写与导入语句一致(Next.js 对路径大小写敏感)。

内容的提问来源于stack exchange,提问作者Konul Memmedova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:05:00