vscode扩展iconPath

时间:2019-10-13 16:45:04

标签: visual-studio-code vscode-extensions

我正在研究使用WebView显示其他数据的VSCode扩展。除了webview图标,我的工作正常。

如果未指定任何内容,则图标为:

Default icon

我在阅读文档时发现WebView允许iconPath选项具有以下格式:

iconPath format

我尝试使用以下代码添加图标:

const onDiskPath = vscode.Uri.file(
    path.join(context.extensionPath, 'resources', 'my-icon.svg')
);

panel.iconPath = panel.webview.asWebviewUri(onDiskPath);

但是我遇到一个错误:

  

拒绝加载图像'vscode-resource:// file /// f:/dev/my-extension/resources/my-icon.svg',因为它违反了以下内容安全策略指令:“ img-src 'self'https:数据:blob:vscode-remote-resource:”。

在webview html中,以下内容策略可用:

<meta http-equiv="Content-Security-Policy" 
        content="default-src 'none'; img-src vscode-resource: https:; script-src 'nonce-${nonce}';">

(我尝试弄乱内容策略,但没有任何变化。显示相同的错误)

内容策略或图标路径的生成方式是否存在问题? (或完全不同的东西:))

1 个答案:

答案 0 :(得分:1)

我认为您误解了“ Webview URI”的含义-它是针对在Webview中使用的资源。对于iconPath,您需要常规文件URI,因此它应该很简单:

panel.iconPath = onDiskPath;