如何find在Node + Typescript + VSCodeasynchronous函数调用缺less的等待?

我们在节点应用程序b / c中部署了错误,我们忘记用“await”作为前缀asynchronous函数调用。

例:

const getUsers = async () => db.query('SELECT * from Users'); const testMissingAwait = async () => { const users = getUsers(); // <<< missing await console.log(users.length); }; testMissingAwait(); 

有没有一种简单的方法来find缺lessawait关键字的asynchronous函数调用?

否则,编写一个Visual Studio代码扩展会自动标记这些扩展会花多less功夫? (如果有人能指出我的方向,我可以解决问题)。

TypeScript已经这样做了

 // users is a Promise<T> const users = getUsers(); // <<< missing await // users.length is not a property of users... then and catch are console.log(users.length); 

你可以find你不会被告知你的错误的地方 – 这些types是兼容的,例如我在这里错过了一个等待:

 function delay(ms: number) { return new Promise<number>(function(resolve) { setTimeout(() => { resolve(5); }, ms); }); } async function asyncAwait() { let x = await delay(1000); console.log(x); let y = delay(1000); console.log(y); return 'Done'; } asyncAwait().then((result) => console.log(result)); 

因为console.log不会导致我的号码和我的承诺之间的任何types不兼容,编译器不能告诉我犯了一个错误。

这里唯一的解决scheme是一个types注释…但是如果你会忘记等待,你可能会忘记一个types注释。

 let y: number = delay(1000); 

TypeScript编译器不提供编译器选项。 但是,TSLint 4.4提供了检测浮动许诺的选项。 你可以阅读这个博客文章的更详细的答案: 检测打字稿中缺less的等待

下载TSLint:

 npm install -g tslint typescript 

configurationTSLint:

 { "extends": "tslint:recommended", "rules": { "no-floating-promises": true } } 

运行TSLint:

 tslint --project tsconfig.json 

如果代码中存在浮动承诺,则应该看到以下错误:

错误:F:/Samples/index.ts [12,5]:承诺必须妥善处理