react-native空文件夹初始化后npm start卡在‘Dependency Graph, done.’求助
我之前搭建React Native项目时也踩过这个坑,折腾了好几种方法才搞定,给你整理几个亲测有效的解决方案,按顺序试试:
先清理缓存重启Metro
这是最直接的第一步,先按Ctrl+C终止当前卡住的Metro进程,然后执行带缓存重置的启动命令:npm start -- --reset-cache要是你用yarn管理依赖,就换成:
yarn start --reset-cache很多时候缓存混乱是罪魁祸首,重置后大概率能解决问题。
检查8081端口是否被占用
Metro默认用8081端口,要是这个端口被其他程序(比如其他开发服务、后台进程)占了,就会卡在依赖图生成后的步骤。
在Windows终端里执行以下命令查看端口占用:netstat -ano | findstr :8081如果输出了PID号,就用这个命令结束占用进程:
taskkill /PID <查到的PID数字> /F要是不想折腾端口,也可以直接指定其他端口启动Metro:
npm start -- --port 8082核对Node.js版本兼容性
React Native不同版本对Node.js的版本有要求,版本太高或太低都会出现奇怪的卡壳问题。你可以查看项目package.json里的React Native版本,然后确认对应的Node.js兼容版本(比如RN 0.7x系列一般推荐Node 16/18)。
用nvm-windows(Windows下的Node版本管理工具)切换版本很方便:# 安装16.x版本(示例) nvm install 16 # 切换到该版本 nvm use 16切换后删掉
node_modules和package-lock.json,重新装依赖再启动:rmdir /s /q node_modules del package-lock.json npm install npm start检查项目路径是否有特殊情况
看你的项目存在OneDrive路径下,OneDrive的同步机制有时候会干扰Metro的文件读取;另外如果路径里有空格、中文或者特殊字符(比如&、#),也可能导致Metro处理失败。
建议把项目移到一个纯英文、无空格的简单路径下,比如C:\RN_Projects\test,然后重新执行npm install和npm start。临时关闭防火墙/杀毒软件
Windows自带的防火墙或者第三方杀毒软件,有时候会误拦截Metro的网络请求,导致进程卡住。可以临时关闭防火墙,或者把Metro相关的进程加入白名单,再重启Metro试试。
要是以上方法都没解决,试试重新初始化一个新项目,或者把React Native升级到最近的稳定版本再尝试。
内容的提问来源于stack exchange,提问作者yeah

