0

在我的代码中执行 useEffect 时,我想通过 firebase .getToken 获取 fcmtoken 并将 fcmtoken 发送到 auth/me 路由器的主体。

但是如果我使用我的代码,这个错误就会发生

      Unhandled Promise Rejection (id: 0):
      ReferenceError: fcmtoken is not defined

也许错误的原因是不正确使用异步等待或任何东西

但我怎样才能修复我的代码?

这是我的代码

    useEffect(() => {
      Linking.addEventListener('url', async ({url}) => {
        var newURL = url;
        var splitURL = newURL.toString().split('=');

        const token = splitURL[1];

        messaging()
          .getToken()
          .then((fcmtoken) => {
            return fcmtoken;
          });
        const {data} = await axios.post(
          '/auth/me',
          {fcmtoken},
          {
            headers: {Authorization: `Bearer ${token}`},
          },
        );
        console.log('data::::', data);

        AsyncStorage.setItem('tokenstore', `${token}`, () => {
          console.log('유저 닉네임 저장 완료');
        });

        dispatch({
          type: KAKAOLOG_IN_REQUEST,
          data: data,
        });
      });
      return () => Linking.removeEventListener('url');
    }, []);
4

1 回答 1

1

您正在尝试将未定义的变量“fcmtoken”发送到 API。在下面的代码中,我更改了获取 fcm 令牌的方式。

    useEffect(() => {
  Linking.addEventListene`enter code here`r('url', async ({url}) => {
    var newURL = url;
    var splitURL = newURL.toString().split('=');

    const token = splitURL[1];

    let fcmtoken = await messaging().getToken();
    const {data} = await axios.post(
      '/auth/me',
      {fcmtoken},
      {
        headers: {Authorization: `Bearer ${token}`},
      },
    );
    console.log('data::::', data);

    AsyncStorage.setItem('tokenstore', `${token}`, () => {
      console.log('유저 닉네임 저장 완료');
    });

    dispatch({
      type: KAKAOLOG_IN_REQUEST,
      data: data,
    });
  });
  return () => Linking.removeEventListener('url');
}, []);
于 2021-04-19T17:53:19.243 回答