🌐 Detecting your location…

Como consertar o módulo não encontrado, não é possível resolver o erro no Webpack

⏱️5 min read  ·  1,078 words

O erroMódulo não encontrado: Erro: Não é possível resolver ‘./something’ no Webpack significa que o empacotador não conseguiu encontrar um módulo que você importou. Isso tem várias causas – pacotes ausentes, caminhos errados, distinção entre maiúsculas e minúsculas ou problemas de configuração. Veja como consertar cada um.

O que esse erro significa

O Webpack constrói um gráfico de dependência seguindo suas importações. “Não é possível resolver” significa que seguiu uma importação, mas não conseguiu encontrar o arquivo ou pacote de destino. O erro geralmente nomeia o módulo que não foi encontrado e o arquivo que o importou – comece por aí.

Causa 1: Pacote não instalado

# Error: Can't resolve 'lodash'
# The package isn't installed

# ✅ Install it
npm install lodash

# Verify it's in package.json and node_modules
npm list lodash

# If node_modules is corrupted, reinstall
rm -rf node_modules package-lock.json
npm install

Causa 2: Caminho relativo errado

// 🐛 Wrong path - file is somewhere else
import { helper } from './utils/helper';   // but it's at ./lib/helper

// ✅ Fix the path
import { helper } from './lib/helper';

// Common mistakes:
// - Missing ./ for local files (Webpack looks in node_modules without it)
import x from 'components/Button';    // ❌ looks in node_modules
import x from './components/Button';  // ✅ relative to current file

// - Wrong number of ../ for parent directories
import x from '../../utils/x';        // count directories carefully

Causa 3: Sensibilidade a maiúsculas e minúsculas

// 🐛 Works on Mac/Windows (case-insensitive) but fails on Linux/CI
import Button from './components/button';   // file is Button.jsx

// ✅ Match the exact case of the filename
import Button from './components/Button';   // Button.jsx

// Case mismatches are the #1 cause of "works locally, fails in CI"
// because Linux file systems are case-sensitive

Causa 4: Extensão de arquivo ausente na configuração

// 🐛 Importing without extension, but Webpack doesn't know to try .tsx
import App from './App';   // App.tsx exists but Webpack can't resolve

// ✅ Add extensions to Webpack resolve config
// webpack.config.js
module.exports = {
  resolve: {
    extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'],
    // Now Webpack tries these extensions when none is specified
  },
};

Causa 5: Aliases de caminho não configurados

// 🐛 Using @ alias but Webpack doesn't know it
import Button from '@/components/Button';   // Can't resolve '@'

// ✅ Configure the alias in webpack.config.js
const path = require('path');

module.exports = {
  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src'),
    },
  },
};

// If using TypeScript, also add to tsconfig.json:
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": { "@/*": ["src/*"] }
  }
}
// Both must agree - Webpack for bundling, tsconfig for type checking

Causa 6: Importando um diretório sem arquivo de índice

// 🐛 Importing a folder that has no index file
import { utils } from './helpers';   // ./helpers is a folder

// ✅ Ensure the folder has an index.js/ts, or import the specific file
// ./helpers/index.js exports the utils, OR:
import { utils } from './helpers/utils';   // specific file

Causa 7: Módulos principais do Node.js no pacote do navegador

// 🐛 Can't resolve 'fs' or 'path' - Node modules don't exist in browsers
// A package tried to use Node.js core modules in browser code

// ✅ In Webpack 5, configure fallbacks or exclude them
module.exports = {
  resolve: {
    fallback: {
      "fs": false,       // not available in browser
      "path": require.resolve("path-browserify"),
      "crypto": require.resolve("crypto-browserify"),
    },
  },
};
// Or find a browser-compatible alternative to the package

Etapas de depuração

  1. Leia o erro completo — nomeia o módulo e o arquivo de importação
  2. Verifique se o pacote está instaladonpm list <module>
  3. Verifique o caminho e o caso — ortografia exata e letras maiúsculas
  4. Verifique resolve.extensions — a extensão do arquivo está configurada?
  5. Verifique os apelidos – @ ou outros aliases estão configurados no Webpack e no tsconfig?
  6. Reinicie o servidor de desenvolvimento — alterações de configuração exigem reinicialização

Perguntas Frequentes

P: Por que funciona localmente, mas falha na CI/produção?
R: Quase sempre diferencia maiúsculas de minúsculas – macOS/Windows não diferencia maiúsculas de minúsculas, Linux (CI/produção) diferencia maiúsculas de minúsculas. ./components/button funciona localmente, mas falha no Linux se o arquivo forButton.jsx. Sempre corresponda ao caso exato do nome do arquivo.

P: Instalei o pacote, mas ainda recebo “não consigo resolver”. Por que?
R: Reinicie o servidor de desenvolvimento (caches Webpack). Verifique se o pacote está realmente em node_modules e package.json. Se for uma importação local, verifique o caminho e o caso. Exclua node_modules e reinstale se a lista de módulos parecer errada.

P: Como faço para importar sem especificar extensões de arquivo?
R: Adicione as extensões aresolve.extensions em webpack.config.js (por exemplo,['.js', '.jsx', '.ts', '.tsx']). Em seguida, o Webpack tenta cada extensão quando você importa sem uma. Reinicie o servidor de desenvolvimento após alterar a configuração.

P: Como configuro aliases de @path?
R: Configurarresolve.alias em webpack.config.js (mapeando @ para seu diretório src) ANDpaths em tsconfig.json se estiver usando TypeScript. Ambos devem concordar – Webpack para empacotamento, TypeScript para verificação de tipo. Reinicie após alterar.

P: Por que o Webpack não consegue resolver ‘fs’ ou ‘path’?
R: Esses são módulos principais do Node.js que não existem em navegadores. Um pacote está tentando usá-los no código do navegador. Configurarresolve.fallback no Webpack 5 para fornecer alternativas de navegador (ou false para excluir) ou encontrar um pacote compatível com navegador.

Conclusão

“Módulo não encontrado: não é possível resolver” no Webpack significa que o empacotador não conseguiu encontrar um módulo importado. Analise as causas:certifique-se de que o pacote esteja instalado, verifique o caminho E maiúsculas e minúsculas (a diferenciação de maiúsculas e minúsculas causa a maioria das falhas de CI), configure resolve.extensions para importações sem extensão, configure aliases de caminho no Webpack e no tsconfig e manipule os módulos principais do Node com substitutos para pacotes de navegador. Leia o erro completo – ele nomeia o módulo ausente e o arquivo de importação, apontando para a fonte. Reinicie o servidor de desenvolvimento após as alterações de configuração. A maioria dos casos é resolvida corrigindo o caminho de importação (veja o caso!) ou instalando o pacote ausente. Depois que o Webpack puder seguir a importação para um arquivo real, o erro será eliminado.

MD Rafikul Islam

Written by

MD Rafikul Islam is a software developer and the editor of TechPulse. He writes about developer tooling, hardware, and the practical decisions that come up in day-to-day engineering work — which laptop to buy, which framework to commit to, why a build broke at 2am. He tests the tools he writes about and says plainly when something is not worth the money. Corrections and corrections requests are welcome at rony.yf25@gmail.com.

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇬🇧 English🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা