React-Native 0.78.0执行npm start报错:Cannot read properties of undefined (reading 'handle')
问题场景
搭建React Native 0.78.0新项目后,在Xcode中启动iOS应用时收到提示"Connect to Metro to develop JavaScript";手动执行npm start启动Metro时出现以下错误:
error Cannot read properties of undefined (reading 'handle').
TypeError: Cannot read properties of undefined (reading 'handle')
at Function.use (/Users/Sebastian/Apps/Naloka/Localizer/NalokaMobileApp/node_modules/connect/index.js:87:21)
at exports.runServer (/Users/Sebastian/Apps/Naloka/Localizer/NalokaMobileApp/node_modules/metro/src/index.flow.js:146:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Object.runServer [as func] (/Users/Sebastian/Apps/Naloka/Localizer/NalokaMobileApp/node_modules/@react-native/community-cli-plugin/dist/commands/start/runServer.js:147:26)
at async Command.handleAction (/Users/Sebastian/Apps/Naloka/Localizer/NalokaMobileApp/node_modules/@react-native-community/cli/build/index.js:139:9)
解决方案
强制指定兼容的connect依赖版本
该错误大多源于connect包版本与Metro不兼容,RN 0.78.0适配connect@3.7.0:- 在项目根目录的
package.json中添加版本约束:- 若使用npm:
"overrides": { "connect": "3.7.0" } - 若使用yarn:
"resolutions": { "connect": "3.7.0" }
- 若使用npm:
- 删除旧依赖和锁文件:
rm -rf node_modules package-lock.json yarn.lock - 重新安装依赖:
npm install # 或 yarn install
- 在项目根目录的
清理Metro缓存
缓存损坏可能引发异常,执行命令重置缓存:npx react-native start --reset-cache检查Node.js版本
确保使用RN 0.78.0兼容的Node.js版本(推荐18.x或20.x LTS),用node -v查看版本,版本不符可通过nvm等工具切换。重新生成Metro配置(可选)
若上述方法无效,可尝试重置Metro配置:- 删除项目根目录的
metro.config.js - 执行
npx react-native init --skip-install生成默认配置,将新的metro.config.js复制到项目中 - 重新安装依赖并启动Metro
- 删除项目根目录的
内容的提问来源于stack exchange,提问作者iSaBo

