Typescript 在VSCode扩展中找不到命令
我正在尝试创建VSCode扩展。此扩展提供了两个命令,更不用说它们的实现了:Typescript 在VSCode扩展中找不到命令,typescript,visual-studio-code,vscode-extensions,Typescript,Visual Studio Code,Vscode Extensions,我正在尝试创建VSCode扩展。此扩展提供了两个命令,更不用说它们的实现了: export function activate(context: ExtensionContext) { const provider = new ContentProvider(); const providerRegistrations = Disposable.from( workspace.registerTextDocumentContentProvider(Content
export function activate(context: ExtensionContext) {
const provider = new ContentProvider();
const providerRegistrations = Disposable.from(
workspace.registerTextDocumentContentProvider(ContentProvider.scheme, provider)
);
// Open the dynamic document, and shows it in the next editor
const openMyExtensionCommandRegistration = commands.registerTextEditorCommand('extension.openMyExtension', editor => {
// Activate the extension and do something
});
const useMyExtensionCommandRegistration = commands.registerTextEditorCommand('extension.useMyExtension', editor => {
// Do something
});
context.subscriptions.push(
provider,
openMyExtensionCommandRegistration,
useMyExtensionCommandRegistration,
providerRegistrations
);
}
这是我的package.json
文件的一部分:
"activationEvents": [
"onCommand:extension.openMyExtension"
],
"main": "./out/extension",
"contributes": {
"commands": [
{
"command": "extension.openMyExtension",
"title": "Open my extension",
"category": "MyExtension"
},
{
"command": "extension.useMyExtension",
"title": "Do something with my extension",
"category": "MyExtension"
}
],
第一个命令,应该是激活我的扩展,起作用了。它出现在命令选项板中,实际执行调用时应该执行的操作
但是,尽管第二个命令出现在命令选项板中,但在调用时仍会引发以下错误消息:
未找到命令“extension.useMeyExtension”
我觉得奇怪的是,我的第一个命令工作正常,但第二个命令却不行,因为代码非常相似。你知道为什么吗
请注意,我显然更改了一些变量名,我仔细检查了真实代码中的拼写错误。您的问题与此问题类似:由于我的评论对某人有所帮助,我想将其作为一个答案发布,以使其更具可视性:
我可以通过手动编译Typescript源代码(通过将
tsc-p./
运行到我的根文件夹中)来解决这个问题。调试时应自动运行此命令,但是,我仍然无法找到为什么我的计算机上没有此命令。您需要将所有注册的命令添加到package.json中的activationEvents
列表中,以便在调用时可用。更新package.json,如下所示:
{
...
"activationEvents": [
"onCommand:extension.openMyExtension",
"onCommand:extension.useMyExtension"
]
...
}
你可以在官方网站上找到更多关于激活事件的详细信息。我也有同样的问题。所有配置都正确,但我的package.json缺少一个依赖项。这导致扩展加载失败,因此在运行时没有正确注册命令
若要找出代码的错误,请打开“帮助”>“切换开发人员工具”并在控制台中查找错误。我的问题是我将Cmder作为VS代码终端运行。当我开始调试时,构建将永远不会完成-您可以从底部工具栏监视正在运行的任务。当我查看正在运行的任务时,我看到:
执行任务:npm run watch我为任何可能因为与我相同的原因而经历这种行为的人添加此答案,因为我花了相当长的时间才意识到发生了什么 我使用PowerShell作为默认终端,并将配置文件配置为将新Shell的路径(使用set Location)设置为特定文件夹,以方便我进行其他开发工作 当按F5启动我的扩展时,VS代码试图从这个目录而不是我的项目目录运行compile命令,当然失败了 当我意识到要查看C:\Users\\AppData\Roaming\npm cache\\日志文件时,这一失败就显而易见了
我从我的PowerShell配置文件中删除了路径设置,VS代码扩展构建工作正常。您尚未激活扩展:
"activationEvents": [
"onCommand:extension. useMyExtension"
],
万一有人犯了和我一样的错误 因此,如果编译成功,但未找到命令,请检查:
Help>Toggle Developer Tools
(从@Bart theeen)检查控制台日志。你很有可能没有注意到JS错误
package.json
“贡献”:{
“命令”:[…]
}
context.subscriptions.push(
vscode.commands.registerCommand('command_name',callbackbunc)
);
vsce包构建了扩展,并通过vsix文件安装了它
我也遇到了同样的问题,通过在“.vscode/extensions/EXTENSION\u NAME”文件夹中运行npm install
解决了这个问题<代码>扩展名\u NAME
是扩展名的名称
我在中找到了解决方案。当您将
registerTextEditorCommand
更改为registerCommand
时,是否检查了它是否有效?我只是好奇而已。你的代码在我看来也不错。我仍在调查到底是什么导致了这个问题,但总而言之,应该将TypeScript编译成JavaScript的命令在我的机器上不起作用。通过查看JavaScript生成的源代码,我发现了这一点。您是否可以尝试使用每个命令创建两个不同的扩展,看看是否有效?如果单个扩展中的多个命令没有引起任何问题,这将提供一个想法。我可以通过手动编译Typescript源代码(通过将tsc-p./
运行到我的根文件夹中)来解决此问题。调试时应自动运行此命令,但是,我仍然无法找到为什么我的计算机上没有此命令。@Eldy我只是遇到了完全相同的问题(我的extension.ts文件在按F5时没有被重建),并且我看到了一个错误,即找不到新注册的命令。运行tsc-p./
也为我解决了这个问题!感谢分享您的解决方案。开发者工具让我走上了正轨。谢谢我在控制台中看不到任何错误,并且我遇到了相同的问题命令未注册,在调试时扩展正常工作,但在释放时不工作