异步箭头函数预期没有返回值
Posted
技术标签:
【中文标题】异步箭头函数预期没有返回值【英文标题】:Async arrow function expected no return value 【发布时间】:2021-04-04 05:06:19 【问题描述】:我正在使用 Firebase oAuth 构建一个应用程序。我按照所有说明进行操作,但我的代码返回一个错误,提示“”。
我看到有多个帖子同名,但没有找到答案。
import firebase from 'firebase/app';
import 'firebase/firestore';
import 'firebase/auth';
export const auth = firebase.auth();
export const firestore = firebase.firestore();
const config =
apiKey: 'AIzaSyDptaU9-hQIIpAW60S1-aGUSdcQdijbNAQ',
authDomain: 'ecommerce-50be3.firebaseapp.com',
projectId: 'ecommerce-50be3',
storageBucket: 'ecommerce-50be3.appspot.com',
messagingSenderId: '948534790840',
appId: '1:948534790840:web:6329c3edcc717138a5424d',
;
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;
导致了问题。
在您发布应用并制定适当的安全规则之前,您可能不想共享您的 Firebase 配置。
【参考方案1】:
将第一行从if (!userAuth) return
更改为if (!userAuth) return
,这应该可以解决问题
说明
你遇到的错误最后说consistent-return
,这基本上意味着你的函数应该始终返回相同的类型。
考虑到这一点,如果我们看一下函数的第一行
if (!userAuth) return;
这一行返回一个void
,但函数的最后一行返回了一些其他类型
return userRef;
userRef
绝对不是void
类型,这就是您遇到此错误的原因。
【讨论】:
【参考方案2】:错误消息告诉您箭头函数应该总是或从不返回值。看here
你有if (!userAuth) return;
和return userRef;
更改if (!userAuth) return ;
应该可以解决问题。
【讨论】:
【参考方案3】:代码中有违反 eslint 'consistent-return' 规则的地方。
这段代码:
if (!userAuth) return;
返回未定义,而箭头函数的最后一行:
return userRef;
;
返回userRef
。
解决方法是返回第一种情况下未定义的内容。
【讨论】:
【参考方案4】:尝试将return替换为return undefined
【讨论】:
以上是关于异步箭头函数预期没有返回值的主要内容,如果未能解决你的问题,请参考以下文章