问题描述
创作vscode扩展名时如何从自定义树视图项目中打开文件?这是一个示例树视图项目:
import { URI } from 'vscode-uri';
import { TreeDataProvider,ProviderResult,TreeItem } from 'vscode';
export class CustomTreeProvider implements TreeDataProvider<TreeItem>{
public getChildren(element?: TreeItem): ProviderResult<TreeItem[]> {
if (!element) {
return [{
id: 'some-unique-id',label: 'some-unique-label',command: {
command: 'vscode.open',title: 'Open',arguments: [URI.file('path/to/file']
}
}];
}
}
}
但是,每当我单击该树视图项目时,它都会在控制台中失败并显示以下消息:
[renderer7] [错误]运行提供的命令:'vscode.open'失败。非法参数'resource'-打开资源:错误:运行贡献的命令:'vscode.open'失败。非法参数'resource'-要打开的资源
我有一个解决方法,可以注册我自己的自定义命令来打开文件,但如果可能的话,我宁愿使用内置的“ vscode.open”命令。
解决方法
问题是vscode.open
命令不喜欢Uri
包生成的vscode-uri
。请改用vscode.Uri
。
import { TreeDataProvider,ProviderResult,TreeItem,Uri } from 'vscode';
export class CustomTreeProvider implements TreeDataProvider<TreeItem>{
public getChildren(element?: TreeItem): ProviderResult<TreeItem[]> {
if (!element) {
return [{
id: 'some-unique-id',label: 'some-unique-label',command: {
command: 'vscode.open',title: 'Open',arguments: [Uri.file('path/to/file']
}
}];
}
}
}