Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.

Muita gente encara dificuldades ao integrar módulos de serviços em React. Um erro comum é o TypeError ao tentar usar funções que parecem estar ausentes na importação.
No exemplo clássico, alguém tenta fazer um POST usando um módulo que deveria ter o método postData, mas acaba recebendo o erro "TypeError: module is not a function". A decisão fica mais saudável quando o time consegue medir o impacto depois.
Isso acontece porque a importação do módulo não foi feita corretamente ou a estrutura do arquivo não exporta a função como esperado. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
No meu time, já passamos por isso várias vezes. A solução é sempre verificar se o módulo exporta a função de forma padrão ou nomeada. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Se for exportação padrão, o import deve ser assim:
import shiftService from 'services/shifts'.
E na hora de usar:
shiftService.postData(data).
Se for exportação nomeada:
import { postData } from 'services/shifts'.
E usar direto:
postData(data).
A dúvida que fica é: você tá conferindo se a exportação do seu módulo realmente exporta o método esperado? Ou caiu na armadilha de importar como se fosse uma função única, quando na verdade é um objeto com vários métodos? Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
No fim das contas, essa confusão dá trabalho depois, porque o React e o Webpack esperam uma estrutura certa para montar os módulos. Se não estiver alinhado, o erro aparece na hora de fazer o request. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Já passou por isso também? Como vocês costumam evitar esses bugs de importação?
Verdade, Wesley. A maioria das confusões acontece por esse motivo. Acho que o maior erro é não conferir se a exportação está do jeito que o React espera.
No meu time, a gente sempre verifica a estrutura do módulo antes de usar. Uma dica é fazer um console.log do import pra ver o que realmente veio. Facilita demais pra evitar esses erros.
Eu sempre dou uma olhada na estrutura do arquivo de serviço. Se estiver usando export default, deve importar direto como você falou. Caso contrário, dá erro mesmo.