Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 在VSCode扩展中找不到命令_Typescript_Visual Studio Code_Vscode Extensions - Fatal编程技术网

Typescript 在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

我正在尝试创建VSCode扩展。此扩展提供了两个命令,更不用说它们的实现了:

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"
],

万一有人犯了和我一样的错误

因此,如果编译成功,但未找到命令,请检查:

  • 在extension debug窗口中,从
    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./
    也为我解决了这个问题!感谢分享您的解决方案。开发者工具让我走上了正轨。谢谢我在控制台中看不到任何错误,并且我遇到了相同的问题命令未注册,在调试时扩展正常工作,但在释放时不工作