无法从 provideTasks 函数添加任务
Unable to add tasks from the provideTasks function
从这个 开始,我还有一个关于如何实现 registerTaskProvider
的 provideTasks
方法的问题。
使用 npm 扩展作为 example 我试图实现一个基本功能,简单地 return 一个单一的、硬编码的任务。然后将其扩展为实际解析文件,准备添加动态任务。但是,我一直无法让它工作。
我正在尝试的代码是:
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 方法中执行 return?我现在怀疑这是一个 TypeScript/JavaScript 问题,而不是 provideTasks
函数的问题,但我仍在寻求这方面的帮助。
对于我正在尝试做的事情,推荐的方法是什么?提前致谢!
您需要return
findFiles
以确保任务实际上是从任务提供者返回的:
return vscode.workspace.findFiles('**/*.cake').then((files) => {
...
});
在您的 tsconfig.json
中使用 "noImplicitReturns": true
——或者更好的是,"strict": true
——可以帮助捕捉这样的错误
从这个 registerTaskProvider
的 provideTasks
方法的问题。
使用 npm 扩展作为 example 我试图实现一个基本功能,简单地 return 一个单一的、硬编码的任务。然后将其扩展为实际解析文件,准备添加动态任务。但是,我一直无法让它工作。
我正在尝试的代码是:
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 方法中执行 return?我现在怀疑这是一个 TypeScript/JavaScript 问题,而不是 provideTasks
函数的问题,但我仍在寻求这方面的帮助。
对于我正在尝试做的事情,推荐的方法是什么?提前致谢!
您需要return
findFiles
以确保任务实际上是从任务提供者返回的:
return vscode.workspace.findFiles('**/*.cake').then((files) => {
...
});
在您的 tsconfig.json
中使用 "noImplicitReturns": true
——或者更好的是,"strict": true
——可以帮助捕捉这样的错误