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

Fazer um pacote npm em ReactJS que funcione de verdade na hora da importação ainda é um desafio para muitos desenvolvedores. Recentemente, ao tentar publicar um pacote com componentes React, me deparei com o erro "module has no exports" ao importar no projeto consumidor.
A questão central costuma estar na configuração de exportação do seu build. No meu caso, o problema era que o arquivo index.js não estava exportando corretamente os componentes, mesmo estando no lugar certo. Além disso, a estrutura do projeto influencia bastante: um arquivo de entrada bem definido no package.json, o uso de módulos ES ou CommonJS, e o formato do bundle final.
No meu cenário, o que ajudou foi ajustar o arquivo index.js para exportar explicitamente os componentes, como no exemplo:
import MyComponent from "./components/MyComponent". export { MyComponent }.
E garantir que o build gere um módulo compatível, preferencialmente usando ferramentas como Rollup ou Webpack, com as configurações corretas de output. 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.
Se seu pacote não está exportando corretamente, vale a pena revisar esses pontos. Além disso, lembre-se que o formato do pacote deve ser compatível com o modo de importação do projeto que vai consumir. Como vocês têm lidado com essa questão na prática? Já passaram por algum problema parecido ao publicar seus componentes? 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.
Exato, e o padrão do seu build influencia muito. Já passei por isso também, e o que resolveu foi usar o atributo module no package.json e configurar o build para gerar ESM, assim o consumo fica mais compatível com os frameworks modernos.
Tem valor, só não compraria como regra geral. Precisa ficar claro quem opera, quem revisa e o que acontece quando falha
duvido!
Também acho que o ponto é cuidar para que o index.js esteja exportando tudo certinho.