gpt4 book ai didi

typescript - Firebase Admin SDK错误: Expression has type `void` .将其作为语句放在自己的行中

转载 作者:行者123 更新时间:2023-12-01 00:28:27 25 4
gpt4 key购买 nike

我正在从Firebase跟踪此示例。
https://firebase.google.com/docs/functions/get-started

我刚刚下载了所有必需的API并开始学习。

我使用TypeScript创建函数,此“Hello World” https://github.com/firebase/functions-samples/blob/master/typescript-getting-started/functions/src/index.ts正常工作。

但是“addMessage()”没有。

exports.addMessage = functions.https.onRequest((req, res) => {
const original = req.query.text;
return admin.database().ref('/messages').push({original: original}).then((snapshot) => {
return res.redirect(303, snapshot.ref.toString());
});
});

它给出以下错误信息:

Firebase Admin SDK ERROR: Expression has type void. Put it on its own line as a statement

最佳答案

这有点晚了,但是如果其他人遇到此问题,则问题在于res.redirect不返回值,因此其返回类型定义为void

该错误是因为return语句需要一个值。您不能返回void。因此,TypeScript编译器将return res.redirect(303, snapshot.ref.toString());视为return void,这是生成错误的原因。

解决方案是将 yield 放在下一行:

res.redirect(303, snapshot.ref.toString());
return;

不幸的是,尽管它是无效的TypeScript,但最佳实践是始终在最终确定响应的代码前放置一个返回值,因此它不会落入函数中其余代码的范围。

将返回值放在下一行很容易忘记,并且在扫描代码时很容易错过。带有响应最终确定的返回值使您清楚处理已完成。

您可以通过禁用 no-void-expression linting规则来禁用此规则,但不建议这样做,因为它通常是一个有用的规则。

关于typescript - Firebase Admin SDK错误: Expression has type `void` .将其作为语句放在自己的行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50300271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com