无法从provideTasks函数添加任务

问题描述 投票:1回答:1

question之后,我还有另一个关于如何实施provideTasksregisterTaskProvider方法的问题。

使用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

UPDATE

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

    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个回答
1
投票

你需要return findFiles来确保任务实际从任务提供者返回:

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

在你的"noImplicitReturns": true中使用tsconfig.json - 或者更好的是,"strict": true-可以帮助捕获像这样的bug

© www.soinside.com 2019 - 2024. All rights reserved.