2016-04-18 4 views
0

Ich arbeite an einem Reaktionsprojekt mit Server-Rendering. Ich habe festgestellt, dass ich window (/ location/localStorage ...) nicht verwenden kann. Es wird beim Server-Rendering-Fortschritt abstürzen. Außerdem, wenn ich eine Bibliothek verwende, die nur für den Browser verfügbar ist, wird es auch abstürzen, sogar importieren/nur die lib. Testen ist alles vorhanden und irgendwann muss ich mehr Code schreiben mit Server-Rendering. Es ist dreckig und macht mich müde. Irgendeine andere Möglichkeit, es zu lösen?Fenster ist nicht definiert, wenn die Verwendung Server Rendering reagieren

+0

Was meinst du mit Server-Rendering? Sie rendern im Browser. Der serverseitige Code unterscheidet sich von der Clientseite. – randominstanceOfLivingThing

+0

Reagieren-Router-Server-Rendering. https://github.com/reactjs/reac-router-tutorial/tree/master/lessons/13-server-rendering – yaotian

+1

@SureshKoya reagiert unterstützt serverseitiges Rendering. Siehe "universal/isomorph" reagieren. Alles wird auf der Serverseite ausgeführt und als eine einzelne HTML-Zeichenfolge an den Client übergeben, die auf dem Bildschirm gerendert werden soll – erichardson30

Antwort

0

Ich habe das gleiche Problem heute über "Bibliothek nur für den Browser verfügbar", nämlich die mit Fenster (react-chartjs-2 in meinem Fall).

Nach einem wenig graben können Sie das folgende NPM-Paket verwenden, um es zu beheben: https://www.npmjs.com/package/window-or-global

Wenn Sie externes Paket nicht verwenden möchten, können Sie auch, wenn überprüfen Fenster in Ihrem server.js definiert ist und Erstellen Sie eine globale Fenstervariable wenn nicht:

if (typeof(window) == 'undefined') global.window = new Object();