ReactJS项目localhost无法显示:npm启动后Chrome仅显示空白页求助
Hey there, let's work through this blank page issue together—this is super common with React projects, so we'll get you back up and running quickly!
第一步:先看Chrome控制台的报错信息
按下F12打开开发者工具,切换到Console标签页,这里几乎肯定能找到问题线索。比如:- 红色的
Module not found提示:说明某个文件路径写错了,或者依赖包没安装完整 Unexpected token报错:大概率是代码里有语法错误(比如JSX标签没闭合、箭头函数写错了格式)Failed to load resource:可能是静态资源(图片、字体)的路径配置有问题
- 红色的
第二步:清缓存+重启开发服务
缓存有时候会搞出莫名其妙的问题,试试这一套操作:- 按
Ctrl+C终止当前的npm start进程 - 清除Chrome缓存:按下
Ctrl+Shift+Delete,勾选「缓存的图片和文件」后点击清除 - 重新启动项目:运行
npm start,等编译完成后再刷新浏览器
- 按
第三步:重装依赖解决版本冲突/缺失
说不定是依赖包被误删,或者自动更新后出现了版本兼容问题:- 删除
node_modules文件夹:Mac/Linux用rm -rf node_modules,Windows用rmdir /s node_modules - 删除
package-lock.json文件 - 重新安装依赖:
npm install - 再次运行
npm start
- 删除
第四步:检查React Router的路由配置(如果用了路由)
路由配置错误是空白页的高发原因:- 确认路由组件有没有被
<BrowserRouter>(或<HashRouter>)包裹 - 检查默认路由
path="/"有没有加exact属性,避免和其他路由匹配冲突 - 嵌套路由的路径写法是否正确,比如子路由有没有继承父路由的路径前缀
- 确认路由组件有没有被
第五步:确认端口是否正确
有时候默认的3000端口被其他程序占用,React会自动切换到其他端口(比如3001),但浏览器可能还是打开了旧端口。看看终端里的输出,确认开发服务的地址是http://localhost:xxx/,然后在浏览器里访问正确的端口。第六步:检查public/index.html的根节点
看看public/index.html里的<div id="root"></div>是不是还存在?React需要把组件挂载到这个根节点上,如果不小心删掉了,页面肯定会是空白的。另外也检查一下里面的脚本引用路径有没有写错。
如果以上步骤都试过还是没解决,把控制台的具体报错信息贴出来,就能更精准地定位问题啦!
内容的提问来源于stack exchange,提问作者Slobodan Vrhovac

