React wird voraussichtlich global verfügbar sein

8

Ich spiele mit React (@ 13.3) mit babel und webpack.

Ich habe eine Komponente, die folgendermaßen definiert ist:

%Vor%

Aber ich bekomme den folgenden Fehler:

  

Uncaught ReferenceError: React ist nicht definiert

Ich verstehe den Fehler: Das JSX-Bit wird in React.createElement(...) kompiliert, aber React befindet sich nicht im aktuellen Bereich, da es nicht importiert wurde.

Meine Fragen sind: Was ist der saubere Weg, um dieses Problem zu umgehen? Muss ich React global mit webpack offenlegen?

Verwendete Lösung:

Ich folgte @ Salehen-Rahman Vorschlag.

In meiner webpack.config.js:

%Vor%

Ich musste auch meine Tests korrigieren, also fügte ich das zur Datei helper.js hinzu:

%Vor%

Meine Tests werden dann mit dem folgenden Befehl gestartet:

%Vor%     
kombucha 13.09.2015, 19:06
quelle

3 Antworten

6
  

Meine Fragen lauten: Was ist die saubere Methode, um dieses Problem zu umgehen? Muss ich React global mit webpack offenlegen?

Füge babel-plugin-react-require zu deinem Projekt hinzu und ändere dann die Babel-Konfiguration deines Webpacks, um die Einstellungen zu ändern zu:

%Vor%

Nachdem Sie das Konfigurationsupdate angewendet haben, können Sie nun Komponenten reaktivieren, ohne React manuell zu importieren.

%Vor%

Denken Sie jedoch daran, dass babel-plugin-react-require Ihren Code so umsetzt, dass die Imports nur bei Vorhandensein des JSX-Tags in eine spezifische -Datei, für eine bestimmte Datei. Für jede andere Datei, die JSX nicht verwendet, aber aus irgendeinem Grund React benötigt, müssen Sie React manuell importieren.

    
Salehen Rahman 14.09.2015, 02:40
quelle
2

Wenn Sie in Ihrem Knotenmodul-Verzeichnis reagiert haben, können Sie import React from 'react'; am Anfang Ihrer Datei hinzufügen.

    
walkerrandophsmith 13.09.2015 19:37
quelle
0

Sie können Webpacks ProvidePlugin verwenden. Aktualisieren Sie den Plug-in-Abschnitt in Ihrer Webpack-Konfiguration, um Folgendes hinzuzufügen:

%Vor%

Dies löst es jedoch nicht für die Tests.

    
Koen. 06.10.2016 10:12
quelle