2
respostas

[Bug] Erro no jwtDecode

Estou fazendo o curso "React Native: integrando um App à Web API" e estou enfrentando um problema com o jwtDecode, ele não esta conseguindo decodificar o token, e na tela do dispositivo exibe a mensagem de erro "possible unhandled promise rejection (id:0): invalidTpkenError: Invalid token specified: invalid base64 for part #2 (Propert 'atob' doesn't exist)"

Não sei se é algo relacionado ao tipo de importação, que não permitem mais a demonstrada no curso que é "import jwtDecode from 'jwt-decode';", pedem que usem "import { jwtDecode } from "jwt-decode";", mas mesmo assim não funciona!

2 respostas

Amigo, entrei em contato recentemente com a alura e eles descontinuaram esses curso de react native pq tava dando muitos problemas de atualização e não indicavam fazê-los mais.

Ms vou te dar uma dica do que encontrei na internet:

  1. veja se o token que você está tentando decodificar é válido e está no formato correto. Às vezes, erros de codificação ou transmissão podem corromper o token.

  2. Parece que você está usando a importação correta de jwt-decode como import { jwtDecode } from "jwt-decode";. Verifique se você instalou corretamente o pacote jwt-decode e se está fazendo a importação correta no arquivo onde você está tentando usar a função jwtDecode.

  3. Verifique a Disponibilidade da Função atob: Em React Native, a função atob não está disponível por padrão, pois ela faz parte do ambiente de navegador. Para usar o atob em React Native, você precisa importar a função manualmente. Você pode fazer isso adicionando o seguinte código no início do seu arquivo:

const { atob } = require('Base64');

Isso importará a função atob do módulo Base64. Certifique-se de instalar o pacote Base64 se ainda não estiver instalado:

npm install --save react-native-base64
  1. Se preferir não usar a função atob, você pode procurar por alternativas que funcionem em React Native, como base-64. Você pode instalá-lo usando:
npm install --save base-64

E então, em seu código, você pode fazer algo assim:

import { decode } from 'base-64';

// Use decode() para decodificar a parte base64 do token

Se liga nesse tópico tbm: https://stackoverflow.com/questions/77481263/jwtdecode-invalidtokenerror-invalid-token-specified-invalid-base64-for-part

Vou testar essas sugestões, e torcer pra que funcione, agradeço pela ajuda e pela informação, não sabia que esses cursos haviam sido descontinuados!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software