187 votes

Impossible de résoudre le module (non trouvé) dans React.js

Je ne peux pas croire que je pose une question évidente, mais j'obtiens toujours l'erreur dans le journal de la console.

La console dit qu'elle ne peut pas trouver le module dans le répertoire, mais j'ai vérifié au moins 10 fois les fautes de frappe. Quoi qu'il en soit, voici le code du composant.

Je veux rendre En-tête dans Racine

import React, { Component } from 'react'
import Header from './src/components/header/header'
import logo from './logo.svg'
import './App.css'

class App extends Component {
  render() {
    return (
      <Header/>
    );
  }
}

export default App;

C'est le Header composant

import React, { Component } from 'react'
import ReactDOM from 'react-dom'
import navBar from './src/components/header/navBar'
import './src/css/header.css'

class Header extends Component {
    render() {
        return {
            <div>
             <div id="particles-js"></div>
             <navBar/>
             <Title/>
          </div>
        };
    }
}

ReactDOM.render(<Header/>, document.getElementById('header'));

J'ai vérifié au moins 10 fois que le module se trouve à cet endroit. ./src/components/header/header et c'est le cas (le dossier "header" contient "header.js").

Pourtant, React jette toujours cette erreur :

Échec de la compilation

./src/App.js Module not found: Can't resolve './src/components/header/header' in '/home/wiseman/Desktop/React_Components/github-portfolio/src'

npm test dit la même chose.

2 votes

Ajouter export default Header; sur votre "fichier d'en-tête".

2 votes

Ça ne marche toujours pas.

4 votes

Il semble que vous ayez besoin import Header from './components/header/header' sans src. Le chemin du fichier est relatif au chemin du fichier d'importation. Vous devez ensuite exporter Header de header.js et fixer App.render méthode.

197voto

Zac Kwan Points 2361

La façon dont nous utilisons habituellement import est basé sur le chemin relatif.

. et .. sont similaires à celles que nous utilisons pour naviguer dans terminal comme cd .. pour sortir de l'annuaire et mv ~/file . pour déplacer un file dans le répertoire actuel.

my-app/
  node_modules/
  package.json
  src/
    containers/card.js
    components/header.js
    App.js
    index.js

Dans votre cas, App.js est en src/ répertoire pendant que header.js est en src/components . Pour import vous feriez import Header from './components/header' . Cela signifie en gros que dans mon répertoire actuel, il faut trouver le dossier des composants qui contient un fichier d'en-tête.

Maintenant, si de header.js vous devez import quelque chose de card vous feriez ça. import Card from '../containers/card' . Cela se traduit par, sortir de mon répertoire actuel, chercher un nom de dossier conteneurs qui ont un fichier de carte.

Quant à import React, { Component } from 'react' ce qui ne commence pas par un ./ ou ../ ou / par conséquent, le nœud commencera à chercher le module dans le fichier node_modules dans un ordre spécifique jusqu'à react est trouvé. Pour une compréhension plus détaillée, on peut lire ici .

39voto

comalex3 Points 621

Si vous créez une application avec react-create-app, n'oubliez pas de définir la variable d'environnement :

NODE_PATH=./src

Ou ajouter à .env dans votre dossier racine ;

1 votes

C'est celui qui m'a résolu. J'ai ajouté un simple App.css à src/ et a fait import App.css . Mais cela m'a donné l'erreur de la question. Cette réponse a résolu le problème.

0 votes

Je pensais que j'étais fou, mon application react ne fonctionnait pas comme prévu et j'ai juste collé cette variable d'environnement et ça marche... Le problème est de savoir pourquoi ce fichier n'est pas déjà fourni... Je ne comprends pas, si react passe douze minutes à télécharger un tas de dépendances pourquoi il n'est pas livré avec ce fichier.

29voto

Ivan_ug Points 391

J'ai supprimé le fichier package-lock.json puis j'ai exécuté

npm install

Lire la suite

0 votes

Merci beaucoup, j'ai eu l'erreur suivante : Module non trouvé : Can't resolve... TextInput et votre solution l'ont résolu

25voto

Tuhin A. Points 146

Dans mon cas, le message d'erreur était

Module not found: Error: Can't resolve '/components/body

Alors que tout était dans le bon répertoire.

J'ai découvert que renommer body.jsx à body.js résolvez le problème !

J'ai donc ajouté ce code dans webpack.config.js pour résoudre jsx comme js

 module.exports = {
  //...
  resolve: {
    extensions: ['.js', '.jsx']
  }
};

Et puis l'erreur de construction a disparu !

16voto

Melchia Points 7965

Ajout de NODE_PATH comme variable d'environnement dans .env est déprécié et est remplacé par l'ajout de "baseUrl": "./src" à compilerOptions sur jsconfig.json ou tsconfig.json .

Référence

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X