Javascript到Typescript转换错误-云函数
我正在按照这个指南()尝试我的第一个云函数,它是用JS编写的,但不是用Typescript编写的 我创建了以下内容:Javascript到Typescript转换错误-云函数,typescript,firebase,google-cloud-functions,Typescript,Firebase,Google Cloud Functions,我正在按照这个指南()尝试我的第一个云函数,它是用JS编写的,但不是用Typescript编写的 我创建了以下内容: // // Start writing Firebase Functions // // https://firebase.google.com/docs/functions/typescript // export const helloWorld = functions.https.onRequest((request, response) => { if
// // Start writing Firebase Functions
// // https://firebase.google.com/docs/functions/typescript
//
export const helloWorld = functions.https.onRequest((request, response) => {
if (request.method !== 'POST') {
return response.status(500).json({
message: 'Not allowed'
});
}
response.status(200).json({
message: 'Hello World!'
});
});
但是,linter给了我以下错误:
类型为“(request:request,response:response)=>response | undefined”的参数不能分配给类型为“(req:request,resp:response)=>void | Promise”的参数。
类型“Response | undefined”不可分配给类型“void | Promise”。
类型“Response”不可分配给类型“void | Promise”。
类型“Response”缺少类型“Promise”中的以下属性:然后,catch,[Symbol.toStringTag]
我不确定如何修改代码。Typescript需要一个不返回任何内容或承诺的函数。但是,您将在if语句中返回响应对象,如果条件不为true,则返回未定义对象。 在这种情况下,解决此问题的简单方法是:
export const helloWorld = functions.https.onRequest((request, response) => {
if (request.method !== 'POST') {
response.status(500).json({
message: 'Not allowed'
});
} else {
response.status(200).json({
message: 'Hello World!'
});
}
});
如果要从函数中“返回”而不是使用else语句,可以执行以下操作:
export const helloWorld = functions.https.onRequest((request, response) => {
if (request.method !== 'POST') {
response.status(500).json({
message: 'Not allowed'
});
return;
}
response.status(200).json({
message: 'Hello World!'
});
});