Expo启动后localhost:19000显示JSON而非Metro Bundler页面问题
问题现象
之前运行expo start或expo start -c时,浏览器会自动打开localhost:19000,显示带二维码、连接选项(tunnel/lan/local)的Metro Bundler页面。卸载重装Node.js后出现以下异常:
expo start执行后浏览器不再自动启动- 手动访问
localhost:19000仅返回项目配置JSON(内容如下):
{"name":"litplans","slug":"litplans","version":"1.0.0","orientation":"portrait","icon":"./assets/icon.png","userInterfaceStyle":"light","splash":{"image":"./assets/splash.png","resizeMode":"contain","backgroundColor":"#ffffff","imageUrl":"http://127.0.0.1:19000/assets/./assets/splash.png"},"updates":{"fallbackToCacheTimeout":0},"assetBundlePatterns":["**/*"],"ios":{"supportsTablet":true,"bundleIdentifier":"com.mallsecinc.litplans"},"android":{"adaptiveIcon":{"foregroundImage":"./assets/adaptive-icon.png","backgroundColor":"#FFFFFF","foregroundImageUrl":"http://127.0.0.1:19000/assets/./assets/adaptive-icon.png"}},"web":{"favicon":"./assets/favicon.png"},"_internal":{"isDebug":false,"projectRoot":"C:\\sites\\apps\\litplans","dynamicConfigPath":null,"staticConfigPath":"C:\\sites\\apps\\litplans\\app.json","packageJsonPath":"C:\\sites\\apps\\litplans\\package.json"},"sdkVersion":"45.0.0","platforms":["ios","android","web"],"developer":{"tool":"expo-cli","projectRoot":"C:\\sites\\apps\\litplans"},"packagerOpts":{"scheme":null,"hostType":"lan","lanType":"ip","devClient":false,"dev":true,"minify":false,"urlRandomness":"2x-kif","https":false},"mainModuleName":"node_modules\\expo\\AppEntry","__flipperHack":"React Native packager is running","debuggerHost":"127.0.0.1:19000","logUrl":"http://127.0.0.1:19000/logs","hostUri":"127.0.0.1:19000","bundleUrl":"http://127.0.0.1:19000/node_modules%5Cexpo%5CAppEntry.bundle?platform=ios&dev=true&hot=false&strict=false&minify=false","iconUrl":"http://127.0.0.1:19000/assets/./assets/icon.png"}
已尝试但无效的操作:
- 运行现有Expo项目/创建全新Expo项目
- 删除
node_modules后重新安装 - 卸载并重新安装Expo模块
解决方案
1. 匹配Expo SDK与Node.js版本兼容性
你的项目使用Expo SDK 45.0.0,官方推荐Node.js版本为14.19.x或16.13.x。重装Node.js后版本可能不兼容,导致Expo CLI功能异常:
- 查看当前Node.js版本:
node -v - 若版本不符,用nvm切换到兼容版本:
# 安装指定版本Node.js nvm install 16.13.0 # 切换到该版本 nvm use 16.13.0
2. 清理Expo全局缓存与重装CLI
重装Node.js可能导致Expo CLI的全局配置或缓存损坏,执行以下命令重置:
# 清除Expo项目缓存 expo r -c --clear-cache # 卸载全局Expo CLI npm uninstall -g expo-cli # 安装SDK45兼容的Expo CLI版本 npm install -g expo-cli@6.3.2
3. 强制启动浏览器
手动指定启动参数,绕过自动启动的异常逻辑:
# 启动时强制打开默认浏览器 expo start --web --open # 或指定特定浏览器(如Chrome) expo start --web --open chrome
4. 检查端口占用与Metro配置
- 确认19000端口未被占用:
若端口被占用,杀死对应进程后重启Expo。# Windows netstat -ano | findstr :19000 # macOS/Linux lsof -i :19000 - 备份并删除项目根目录的
metro.config.js,使用默认配置测试是否恢复正常。
5. 重置项目依赖环境
# 删除依赖锁文件与node_modules rm -rf node_modules package-lock.json yarn.lock # 重新安装依赖 npm install # 清除项目缓存后启动 expo start -c
内容的提问来源于stack exchange,提问作者Dev Ops
相关产品推荐
相关产品推荐

