异步箭头函数预期没有返回值

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

【讨论】:

以上是关于异步箭头函数预期没有返回值的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# 歌谣学前端之箭头函数1

箭头函数

箭头函数

es6 箭头函数

如何修复“预计在箭头函数末尾返回一个值”警告?

如何用reactjs修复“预计在箭头函数中返回一个值”?