React项目引入FullCalendar报TypeError: callback is not a function如何解决
问题描述
我尝试在React项目中引入Fullcalendar组件,按照官方文档指引写出了如下代码:
import React from "react"; import { Box } from "./general" import FullCalendar from "@fullcalendar/react"; import dayGridPlugin from "@fullcalendar/daygrid"; function CalendarBox() { return ( <Box title="Calendar"> <FullCalendar plugins={[ dayGridPlugin ]} initialView="dayGridMonth"/> </Box> ) } export default CalendarBox
但渲染组件时抛出了如下错误:
Uncaught TypeError: callback is not a function
上述错误出现在以下组件中:
in CalendarDataProvider (created by FullCalendar)
in FullCalendar (created by CalendarBox)
我之后直接使用了官方文档的示例代码测试:
import React from 'react' import FullCalendar from '@fullcalendar/react' // must go before plugins import dayGridPlugin from '@fullcalendar/daygrid' // a plugin! export default class DemoApp extends React.Component { render() { return ( <FullCalendar plugins={[ dayGridPlugin ]} initialView="dayGridMonth" /> ) } }
该代码在codeSandBox中可以正常运行,但放到我的本地项目中仍然报错,错误截图如下:
请问我哪里操作存在问题?
备注:我已经查阅了Stack Overflow上的多篇相关帖子,但这些帖子要么没有使用React版本的FullCalendar组件,要么错误是在添加日程事件时触发的,和我的问题场景不符。
解决方案
你可以按照以下优先级排查问题:
- 首先确认所有FullCalendar相关依赖的版本完全一致。运行
npm list @fullcalendar/react @fullcalendar/daygrid查看版本号,如果版本不匹配,统一安装相同版本的稳定版包即可,例如执行npm install @fullcalendar/react@6.1.15 @fullcalendar/daygrid@6.1.15,版本号可以替换为当前最新的官方稳定版。 - 如果你使用的是React 18+版本,检查项目入口是否开启了React严格模式(
<React.StrictMode>标签)。旧版本FullCalendar对React 18严格模式适配存在bug,你可以临时注释StrictMode标签测试,如果报错消失,直接升级FullCalendar到最新稳定版即可解决适配问题。 - 排除依赖缓存损坏的影响:删除本地node_modules文件夹,以及package-lock.json、yarn.lock或pnpm-lock.yaml锁文件,再重新执行依赖安装命令。
- 测试时先把FullCalendar组件直接挂载到根路由页面,排除你自定义的Box组件可能存在的属性劫持、参数注入逻辑带来的冲突。
内容的提问来源于stack exchange,提问作者Gamopo
相关产品推荐
相关产品推荐

