VS Code 不运行 React Native 应用,仅提供编辑与调试集成;必须先确保 CLI(如 npx react-native run-android)能独立成功运行,再配置 React Native Tools 扩展及匹配的 launch.json。

VS Code 本身不直接运行 React Native 应用,它只是编辑器;真正起作用的是 CLI 工具链(react-native CLI 或 expo)、Node.js、JDK、Android SDK/iOS Xcode 等底层环境。VS Code 的价值在于高效编辑 + 调试集成,但前提是本地开发环境已能通过命令行成功运行 npx react-native run-android 或 npx expo start。
确认 CLI 可独立运行再配 VS Code
很多“VS Code 调试失败”问题,根源是 CLI 本身就不通——比如 adb 找不到、ANDROID_HOME 未设、Xcode 命令行工具未安装。VS Code 的调试器(如 React Native Tools 扩展)只是调用这些命令的封装,不会帮你修环境。
- 先在终端执行
npx react-native doctor(RN 0.71+)或react-native info,逐项检查 Android/iOS 依赖状态 - 确保
npx react-native run-android能真机/模拟器启动 App,且控制台输出Running app on... - 如果这步失败,装再多 VS Code 插件也没用——回头补环境,别在编辑器里“调调试器”
装对扩展:只留 React Native Tools,禁用冲突插件
React Native Tools(Microsoft 官方维护)是唯一需要的核心扩展,它提供断点调试、console.log 跳转、设备选择等能力。其他名字带 “React”、“Debugger for Chrome”、“ESLint” 的插件可能干扰调试会话。
- 卸载所有非必要 React 相关扩展,尤其避免同时启用
Debugger for Edge和React Native Tools - 在 VS Code 设置中搜索
react-native-tools,确认已启用;检查其设置项:react-native-tools.packagerPort是否与你项目实际端口一致(默认 8081) - 若用 Expo,需额外安装
Expo Router插件(仅当项目含app/目录),并确保EXPO_USE_DEV_SERVER=true环境变量生效
调试配置要匹配运行方式:CLI 项目 vs Expo 项目
VS Code 的 .vscode/launch.json 必须和你启动项目的命令严格对应,否则断点不触发、reload 失败。
- 纯 CLI 项目(无 Expo):使用
configuration type: "reactnative",platform设为"android"或"ios",sourceMaps设为true - Expo 项目:改用
type: "expo",platform改为"android"/"ios"/"web",且必须提前运行npx expo start(不是npx react-native run-android) - 热重载(Hot Reloading)靠 Metro 实现,VS Code 不控制它;但若发现保存后没反应,检查 Metro 控制台是否报
Unable to resolve module——这是代码语法错误导致打包中断,不是 VS Code 问题
断点调试常见卡点与绕过方法
React Native 调试基于 Chrome DevTools 协议,但 JS 代码经 Metro 编译后映射到源码,容易因 source map 错位导致断点偏移或失效。
- 首次调试前,在设备/模拟器中打开开发者菜单(Android 按两下 R 或摇晃,iOS Cmd+D),关闭
Enable Hot Reloading,开启Debug—— 这会连接到 VS Code 启动的调试会话 - 如果断点灰色(未命中),右键断点选
Copy Link,粘贴到浏览器看是否跳转到正确源码行;若跳错,删掉node_modules/.cache/metro和ios/build重试 - 调试 iOS 时,若报错
Could not connect to development server,检查 VS Code 调试配置里的packagerPort是否和 Xcode 中RCT_METRO_PORT一致(默认都是 8081)
最常被忽略的一点:VS Code 调试器无法接管原生模块(Java/Kotlin/Objective-C/Swift)的逻辑。你只能调试 JavaScript 层,想查 native crash 或生命周期,还得回 Android Studio/Xcode。热重载也只刷新 JS bundle,改了原生代码必须重新编译整个 App。








