【问题标题】:Unable to add tasks from the provideTasks function无法从 provideTasks 函数添加任务
【发布时间】:2017-07-14 20:56:24
【问题描述】:

从这个question 开始,我还有一个关于如何实现registerTaskProviderprovideTasks 方法的问题。

将 npm 扩展用作example 我尝试实现一个基本功能,以简单地返回单个硬编码任务。然后将其扩展为实际解析文件,准备添加动态任务。但是,我无法让它工作。

我正在尝试的代码是:

    vscode.workspace.findFiles('**/*.cake').then((files) => {
        if (files.length === 0) {
            return emptyTasks;
        }

        try {
            const result: vscode.Task[] = [];
            result.push(new vscode.Task({type: 'cake', script: 'NuGet-Restore'} as CakeTaskDefinition, 'Nuget-Restore', 'cake', new vscode.ShellExecution('npm install'), []));

            console.log(result);
            return Promise.resolve(result);
        } catch (e) {
            return Promise.resolve(emptyTasks);
        }
    });

尽管我可以看到该结果包含一个任务,但我没有看到它填充在任务下拉列表中。

任何人都可以就为什么这不起作用提供任何帮助吗?

可以在here找到包含当前代码的存储库。

更新

我刚刚将上面的代码编辑为如下:

    try {
        const result: vscode.Task[] = [];
        result.push(new vscode.Task({ type: 'cake', script: 'NuGet-Restore' } as CakeTaskDefinition, 'Nuget-Restore', 'cake', new vscode.ShellExecution('npm install'), []));

       console.log(result);
       return Promise.resolve(result);
    } catch (e) {
        return Promise.resolve(emptyTasks);
    }

通过不包括初始 findFiles 函数,它可以正确地使用单个硬编码任务填充任务菜单。为什么我不能从 findFiles 方法中返回?我现在怀疑这是一个 TypeScript/JavaScript 问题,而不是 provideTasks 函数的问题,但我仍在寻求一些帮助。

对于我正在尝试做的事情,推荐的方法是什么?提前致谢!

【问题讨论】:

    标签: visual-studio-code vscode-extensions vscode-tasks


    【解决方案1】:

    您需要return findFiles 以确保任务实际上是从任务提供者返回的:

    return vscode.workspace.findFiles('**/*.cake').then((files) => {
        ...
    });
    

    在您的tsconfig.json 中使用"noImplicitReturns": true——或者更好的是"strict": true——可以帮助捕获此类错误

    【讨论】:

      猜你喜欢
      • 2023-01-11
      • 2018-03-02
      • 2015-02-23
      • 2013-12-19
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多