繁体   English   中英

异步箭头 function 预计没有返回值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM