You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode Webview扩展加载失败:提示无数据提供者注册

解决VSCode Webview扩展提示"There is no data provider registered that can provide view data."的问题

问题根源及修复方案

1. 视图容器ID不匹配

在package.json的contributes.views配置中,你使用了错误的容器ID。views的键必须与viewsContainers.activitybar中定义的id完全一致,否则VSCode无法将视图与对应的容器关联,导致找不到已注册的Webview提供者。

修复后的package.json:

{
  "contributes": {
    "viewsContainers": {
      "activitybar": [
        {
          "id": "p",
          "title": "vs",
          "icon": "resources/icon.svg"
        }
      ]
    },
    "views": {
      "p": [ // 改为与viewsContainers中的id一致的"p"
        {
          "id": "view",
          "name": "vsss"
        }
      ]
    }
  }
}

2. 缺少_getHtmlForWebview方法实现

你的MyViewProvider类中调用了_getHtmlForWebview方法,但未实现该方法,运行时会因无法生成Webview所需的HTML内容而报错。

修复后的extension.ts:

import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
  const myViewProvider = new MyViewProvider(context.extensionUri);
  context.subscriptions.push(
    vscode.window.registerWebviewViewProvider(
      "view",
      myViewProvider
    )
  );
}

class MyViewProvider implements vscode.WebviewViewProvider {
  constructor(private readonly _extensionUri: vscode.Uri) {
  }

  public resolveWebviewView(
    webviewView: vscode.WebviewView,
    _context: vscode.WebviewViewResolveContext,
    _token: vscode.CancellationToken
  ) {
    webviewView.webview.options = {
      enableScripts: true,
      localResourceRoots: [vscode.Uri.joinPath(this._extensionUri, 'src', 'webview')]
    };

    webviewView.webview.html = this._getHtmlForWebview(webviewView.webview);   
  }

  // 新增_getHtmlForWebview方法实现
  private _getHtmlForWebview(webview: vscode.Webview): string {
    return `
      <!DOCTYPE html>
      <html lang="en">
      <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>VSSS Webview</title>
      </head>
      <body>
        <h1>Hello Webview!</h1>
      </body>
      </html>
    `;
  }
}

验证修复

完成修改后,按Ctrl+Shift+P执行Reload Window重新加载扩展,点击活动栏的扩展图标即可正常显示Webview界面。

内容的提问来源于stack exchange,提问作者loopstring

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:43:14