![](/img/trans.png)
[英]How to return data from firebase cloud function and return async response?
[英]Async arrow function expected no return value
我正在使用 Firebase oAuth 构建一个应用程序。我遵循了所有说明,但我的代码返回了一个错误,指出“asyn arrow function expected no return value”。
我看到有多个标题相同的帖子,但没有找到答案。
import firebase from 'firebase/app';
import 'firebase/firestore';
import 'firebase/auth';
export const auth = firebase.auth();
export const firestore = firebase.firestore();
const config = {
apiKey: 'XXXXXXXXX',
authDomain: 'XXXXXXXXX',
projectId: 'XXXXXXXXX',
storageBucket: 'XXXXXXXXX',
messagingSenderId: 'XXXXXXXXX',
appId: 'XXXXXXXXX',
};
firebase.initializeApp(config);
export const createUserProfileDocument = async (userAuth, additionalData) => {
if (!userAuth) return;
const userRef = firestore.doc(`users/${userAuth.uid}`);
const snapShot = await userRef.get();
if (!snapShot.exists) {
const { displayName, email } = userAuth;
const createdAt = new Date();
try {
await userRef.set({
displayName,
email,
createdAt,
...additionalData,
});
} catch (error) {
console.log('error creating user', error.message);
}
}
return userRef;
};
const provider = new firebase.auth.GoogleAuthProvider();
provider.setCustomParameters({ prompt: 'select_account' });
export const signInWithGoogle = () => auth.signInWithPopup(provider);
export default firebase;
将第一行从if (!userAuth) return
更改为if (!userAuth) return {}
,这应该可以解决问题
解释
您遇到的错误最后说consistent-return
,这基本上意味着您的 function 应该始终返回相同的类型。
考虑到这一点,如果我们看一下您的 function 中的第一行
if (!userAuth) return;
此行返回一个void
,但 function 中的最后一行返回一些其他类型
return userRef;
userRef
绝对不是void
类型,这就是您遇到此错误的原因。
此规则要求return
语句始终或从不指定值。
此规则的错误代码示例:
function doSomething(condition) {
if (condition) {
return true;
} else {
return;
}
}
function doSomething(condition) {
if (condition) {
return true;
}
}
此规则的正确代码示例:
function doSomething(condition) {
if (condition) {
return true;
} else {
return false;
}
}
如果你想禁用这个规则,你可以使用这个评论:
// eslint-disable-next-line consistent-return
return userRef;
错误消息告诉您箭头 function 应该始终或从不返回值。 看这里
你有if (;userAuth) return;
并return userRef;
更改if (;userAuth) return {};
应该解决问题。
代码中存在违反 eslint ' consistent-return ' 规则的地方。
这段代码:
if (!userAuth) return;
返回未定义,而箭头 function 的最后一行:
return userRef;
};
返回userRef
。
解决方法是返回在第一种情况下未定义的内容。
尝试将return替换为return undefined
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.