错误:verifier._reset 不是函数。尝试使用 Firebase 使用手机登录时,反应原生和 Expo

Posted

技术标签:

【中文标题】错误:verifier._reset 不是函数。尝试使用 Firebase 使用手机登录时,反应原生和 Expo【英文标题】:Error: verifier._reset is not a function. when trying to Sign in with phone using firebase, react native and Expo 【发布时间】:2021-12-18 03:33:48 【问题描述】:

我正在尝试在 mu react 本机应用程序中实现电话登录,但出现以下错误:

verifier._reset is not a function. (In 'verifier._reset()', 'verifier._reset' is undefined)
at http://192.168.1.2:19000/node_modules/expo/AppEntry.bundle?platform=android&dev=true&hot=false&minify=false:126633:27 in <unknown>
at node_modules/tslib/tslib.js:60:8 in createExporter
at node_modules/tslib/tslib.js:18:0 in <global>
at http://192.168.1.2:19000/node_modules/expo/AppEntry.bundle?platform=android&dev=true&hot=false&minify=false:116838:35 in rejected

这就是我尝试实现签名的方式:


const SignUp = () => 
    const [phoneNumber, setPhoneNumber] = useState("")
    const recaptchaVerifier = React.useRef(null);
    const auth = getAuth(app)

    const sendCode = async () => 
        console.log(recaptchaVerifier.current)
        signInWithPhoneNumber(auth, phoneNumber, recaptchaVerifier.current!)
            .then(r => 
            console.log("Hej!")
        ).catch(err=>
            console.log(err)
        )
    

    return (
        <SafeAreaView
        style=tw.style('w-full')>
            <FirebaseRecaptchaVerifierModal
                ref=recaptchaVerifier
                firebaseConfig=app.options
                attemptInvisibleVerification=true
            />
            <TextInput
                style=tw.style('w-1/2', 'shadow', 'border', 'rounded', 'py-2', 'px-3', 'text-gray-700')
                onChangeText=setPhoneNumber
                keyboardType="phone-pad"
            />
           <Button title="Send Code" onPress=sendCode/>
        </SafeAreaView>
    )



export default SignUp

我也尝试过这样实现: const phoneProvider = new PhoneAuthProvider(auth) const verificationId = await phoneProvider.verifyPhoneNumber(phoneNumber, recaptchaVerifier.current!) 但我得到了相同的结果。

我完全没有想法,所以任何帮助将不胜感激。

【问题讨论】:

我也面临同样的问题,如果问题解决了,我可以知道您采用的方法是什么 【参考方案1】:

打开这个文件: node_modules\expo-firebase-recaptcha\build\FirebaseRecaptchaVerifier.js 并添加

export default class FirebaseRecaptchaVerifier 
    token;
    constructor(token) 
        this.token = token;
    
    get type() 
        return 'recaptcha';
    
    async verify() 
        return this.token;
    
    async _reset()
    

在此处添加 _reset() 函数并保存!错误将得到修复。

【讨论】:

添加了与您提到的相同的内容,但仍然在该文件中看到相同的错误代码如下export default class FirebaseRecaptchaVerifier token; constructor(token) this.token = token; get type() return 'recaptcha'; async verify() return this.token; async _reset() 我错过了什么吗? 杰夫的回答解决了这个问题。我没有注意到 OP 正在使用 FirebaseRecaptchaVerifierModal。如果您使用的是 Modal,则需要在 FirebaseRecaptchaVerifierModal.js 中添加 _reset 函数【参考方案2】:

这个答案很接近,但即使在修补软件包后我也遇到了同样的问题。这似乎是最近的问题,并且 OP 使用的是 Modal 形式,而不是原始验证器。

相反,将以下内容添加到 node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaVerifierModal.js 第 31 行附近:


    async _reset() 
        return
    

【讨论】:

【参考方案3】:

只需更新您的 expo 包,即可解决。 (见here)

【讨论】:

提供指向其他网站的链接是个好主意,但无需跟随链接,anwser 应该是有用且清晰的。考虑添加一些细节或引用。【参考方案4】:

在您的 package.json 中将 "expo-firebase-recaptcha": "~2.0.2" 更改为 "expo-firebase-recaptcha": "~2.1.0"。然后运行yarn install 以获取最新更新。

【讨论】:

以上是关于错误:verifier._reset 不是函数。尝试使用 Firebase 使用手机登录时,反应原生和 Expo的主要内容,如果未能解决你的问题,请参考以下文章

Easy_install 或 pip 安装错误:[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:579)]

urllib.error.URLError: <urlopen 错误 [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:11

Unable to verify your data submission.加入了_csrf也报400错误的解决

pandas --index ,reindex, set_index, reset_index , reindex_like函数 之 set_index

pandas --index ,reindex, set_index, reset_index , reindex_like函数 之 set_index

解决pyhton aiohttp ssl:None [[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)(代