JavaScript/Node.js中的VSCode定义提供程序
我想在我的VSCode扩展中实现一个DefinitionProvider。 但我不确定如何在Javascript中实现这一点,因为registerDefinitionProvider不接受我的类JavaScript/Node.js中的VSCode定义提供程序,javascript,node.js,typescript,vscode-extensions,Javascript,Node.js,Typescript,Vscode Extensions,我想在我的VSCode扩展中实现一个DefinitionProvider。 但我不确定如何在Javascript中实现这一点,因为registerDefinitionProvider不接受我的类 module.exports = class ALDefinitionProvider { provideDefinition(textDocument, position, token) { console.log(textDocument); console.
module.exports = class ALDefinitionProvider {
provideDefinition(textDocument, position, token) {
console.log(textDocument);
console.log(position);
}
}
错误消息:
案文如下:
“ALDefinitionProvider”类型的参数不能分配给“DefinitionProvider”类型的参数。
“ProviderDefinition(…)”返回的类型在这些类型之间不兼容。
类型“void”不可分配给类型“ProviderResult”
我是这样注册的:
vscode.languages.registerDefinitionProvider('al', new ALDefinitionProvider());
我也尝试过类似的方法,但我不确定如何使用以下方法实现:
class GoDefinitionProvider extends vscode.DefinitionProvider {
provideDefinition(
document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken):
Thenable<vscode.Location> {
}
}
类GoDefinitionProvider扩展了vscode.DefinitionProvider{
提供定义(
文档:vscode.TextDocument,位置:vscode.position,标记:vscode.CancellationToken):
那布尔{
}
}
有人知道如何在Javascript/Node.js中实现这一点吗?:) 是的,是我的错。。。
我为我的函数添加了一个承诺,现在它工作了
module.exports = class ALDefinitionProvider {
provideDefinition(textDocument, position, token) {
return new Promise((resolve) => {
console.log(textDocument);
console.log(position);
return new Location(Uri.parse(''), position);
});
}
}
“registerDefinitionProvider不接受我的类”-您遇到了什么错误?@Bergi我在我的问题中添加了错误消息:),因此这是一个typescript错误!是的,您需要更改
providedDefinition
方法的类型以返回位置(或其数组,或LocationLink
s)。“我不知道如何用这个实现它”-否则你知道如何实现它吗?你希望你的扩展提供什么定义?哦,我的错。。。我带着一个承诺返回了那个地点,它成功了。“您希望扩展提供什么定义?”-变量和函数