Browser Preview内置浏览器预览卡顿主因非插件本身,而是Chromium进程被其他插件干扰、资源抢占或配置未对齐导致启动失败;白屏多因chromeExecutable路径未配、defaultStartUrl为空或并发调用create()引发静默等待超时。

内置浏览器预览卡顿,90% 不是 Browser Preview 插件本身的问题,而是它依赖的 Chromium 进程被其他插件干扰、抢占资源,或配置没对齐导致启动失败后反复重试。
BrowserViewWindowManager.create() 调用后页面白屏/无响应
这不是代码写错了,而是 create() 在后台静默等待 Chrome 启动,但等不到——常见于路径未配、配置未加载、或并发触发。白屏时控制台通常不报错,只在 VSCode 输出面板 → “Browser Preview” 频道里看到 Failed to launch browser 或 Timeout waiting for browser。
- 检查
extensionConfiguration.ts中chromeExecutable是否明确指向本地 Chrome 可执行文件(Windows 默认路径是C:\Program Files\Google\Chrome\Application\chrome.exe,macOS 是/Applications/Google Chrome.app/Contents/MacOS/Google Chrome) - 确保
defaultStartUrl有值,否则startUrl读成undefined,Chromium 加载空地址后挂起 - 快捷键连按多次
create()会触发并发争抢——加个简单防抖:调用前先await vscode.workspace.saveAll()或用setTimeout间隔 300ms
多窗口打开后全部挤在同一个视图栏(viewColumn)
VSCode 的 viewColumn 不是像素坐标,而是逻辑栏位(One / Two / Three),BrowserViewWindowManager 默认靠读取上一个窗口的 viewColumn +1 来分配新窗口位置。一旦你手动拖拽过窗口、或用 vscode.window.showTextDocument 类 API 干扰过视图状态,这个链就断了。
- 显式指定
viewColumn:比如windowManager.create("http://localhost:3000", { viewColumn: vscode.ViewColumn.Two }) - 注意
vscode.ViewColumn.Three是上限,再往右会 fallback 到One,不会自动换行 - 如果项目需要固定三栏布局,建议在插件激活时统一管理
viewColumn分配逻辑,别依赖“上一个”
关掉一个预览窗口,CPU 占用仍居高不下
这不是泄漏,是设计行为:BrowserViewWindowManager 只在**所有预览窗口都关闭**时才调用 killBrowserProcess()。单个窗口关闭只是隐藏 WebviewPanel,Chromium 进程保留在后台,为下次打开加速。
- 频繁开关窗口却没释放资源?大概率是
dispose()漏调了——尤其异常路径下(如 URL 加载失败、用户快速切换工作区) - 想强制释放?只能全关再开,或手动调
Developer: Restart Extension Host,但会中断所有插件状态 - 检查输出面板 “Browser Preview” 日志里是否有重复的
Creating new browser instance...,那是 create() 被反复触发的信号
真正难排查的不是窗口打不开,而是 Chromium 进程启动成功了,但被 GitLens 或 ESLint 的后台任务拖慢渲染帧率——这种卡顿不会报错,只会让页面滚动粘滞、输入延迟。得结合 Developer: Open Process Explorer 看 extensionHost 下 RSS 和 CPU 波动,再交叉比对 “Browser Preview” 日志时间戳。


















