Tha*_*elo 1 firebase typescript firebase-realtime-database google-cloud-functions
我正在从Firebase跟踪此示例。 https://firebase.google.com/docs/functions/开始
我刚刚下载了所有必需的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());
});
});
Run Code Online (Sandbox Code Playgroud)
它给出以下错误消息:
Firebase Admin SDK错误:表达式的类型为
void
。单独声明
这有点晚了,但是如果其他人遇到此问题,问题在于res.redirect
它不会返回值,因此其返回类型定义为void
。
该错误是因为该return
语句需要一个值。你不能回来void
。因此,TypeScript编译器将其显示return res.redirect(303, snapshot.ref.toString());
为return void
,这是生成错误的原因。
解决方案是将收益放在下一行:
res.redirect(303, snapshot.ref.toString());
return;
Run Code Online (Sandbox Code Playgroud)
不幸的是,尽管它是无效的TypeScript,但最佳实践是始终在最终确定响应的代码前放置一个返回值,因此它不会落入函数中其余代码的范围。
将返回值放在下一行很容易忘记,并且在扫描代码时很容易错过。带有响应完成的返回使处理很清楚。
您可以通过禁用no-void-expression
掉毛规则来禁用它,但是不建议这样做,因为它通常是有用的规则。
归档时间: |
|
查看次数: |
1421 次 |
最近记录: |