Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Import jwt-decode. Erro compilação versão recente

Ao fazer import jwt_decode from 'jwt-decode'; aparece um erro de compilação com a seguinte mensagem: Module '"c:/Users/anton/angular/jornada-milhas/nodemodules/jwt-decode/build/cjs/index"' has no default export.ts.

Não encontrei nenhuma solução aparente até verificar que a versão do jwt-decode que instalei foi a mais recente (4.0.0) e no curso foi utilizada a 3.1.2. Ao mudar a versão não houve mais erro de compilação.

Qual o motivo do erro e como saná-lo em versões mais recentes do jwt-decode?

1 resposta
solução!

E aí, Antonio! Tudo tranquilo?

Então, quando você tenta importar algo e rola esse erro de "no default export", geralmente é porque a estrutura do pacote ou da biblioteca mudou entre as versões. Aquele import jwt_decode from 'jwt-decode'; é uma forma mais moderna de fazer importações, mas parece que a versão mais recente do jwt-decode não está seguindo essa convenção.

Aqui vão algumas dicas:

Primeiro, vale dar uma olhada na documentação ou no repositório do jwt-decode para ver se eles mencionam algo sobre mudanças na estrutura de importação/exportação entre versões. Às vezes, os mantenedores da biblioteca fazem essas alterações e documentam isso.

Como você mesmo observou, ao usar a versão 3.1.2, tudo funcionou bem. Então, se você está seguindo um curso que usa essa versão específica, talvez seja mais fácil (pelo menos por enquanto) continuar usando essa versão. À medida que você avança no curso, pode ser que surjam atualizações ou correções para o problema. Se você realmente quiser ou precisar usar a versão mais recente, pode tentar uma importação diferente, se a biblioteca permitir. Por exemplo, em vez de import jwt_decode from 'jwt-decode';, você pode tentar algo como import * as jwt_decode from 'jwt-decode'; ou const jwt_decode = require('jwt-decode');. Isso pode resolver o problema, mas também pode não funcionar dependendo da estrutura da biblioteca.

No fim das contas, a ideia é sempre manter a flexibilidade e estar preparado para adaptar o código conforme as mudanças nas bibliotecas ou nas melhores práticas.