已安装React依赖仍报ReferenceError: React is not defined错误求助
排查方向
- 清空本地构建缓存:删除项目根目录的
.next文件夹,重启开发服务,确认是否是旧编译产物导致的报错。 - 检查报错指向的
BaseAccordion组件文件顶部是否添加了import React from 'react'导入语句,你可能仅修改了联系表单相关文件的导入,遗漏了该组件。 - 检查自定义
_app.js、_document.js文件的顶部导入配置,确认这两个全局文件也添加了React导入,和报错堆栈的调用链路匹配。 - 核对Babel/Next.js编译配置:
如果你项目有自定义babel.config.js或者.babelrc,确认@babel/preset-react的配置项中runtime设置为automatic(适配React17+的新JSX转换逻辑),如果设为classic则要求所有含JSX的文件必须手动导入React。 - 排查React版本冲突:执行
npm ls react(npm)或yarn list react(yarn)检查是否存在多版本React共存的情况,如有可在package.json中添加配置固定版本:
用yarn的话添加:
用npm的话添加:"resolutions": { "react": "^17.0.2", "react-dom": "^17.0.2" }
配置完成后重新安装依赖再启动服务。"overrides": { "react": "^17.0.2", "react-dom": "^17.0.2" } - 检查所有含JSX逻辑的文件后缀是否为
.jsx,部分自定义编译配置不会对.js后缀的文件做JSX转换处理,会导致React引用缺失。
内容的提问来源于stack exchange,提问作者Han
相关产品推荐
相关产品推荐

