2017-04-25 4 views
2

I MERN verwenden - https://github.com/Hashnode/mern-starter (reagieren, redux, webpack, NodeJS, exprimieren) Und Komponente reagieren-Sound - https://github.com/leoasis/react-soundWebpack Rendering: "Fenster ist nicht definiert"

Wenn ich Komponente

import Sound from 'react-sound'; 
umfassen

und versuchen Sie den Server zu starten, ich habe "window is not defined" Fehler von Webpack Server Rendering.

Aber wenn ich diese Zeile kommentieren und den Server starten, wird alles in Ordnung sein. Danach kann ich diese Zeile auskommentieren und die Komponente wird funktionieren, denn wenn der Server läuft, lösen Änderungen nicht das Server-Rendering aus (nur Front-Rendering).

Wenn ich versuche,

if (typeof window !== 'undefined') { 
    const Sound = require('react-sound'); 
} 

Und machen

render() { 
    return (
     <div> 
      <Sound playStatus={Sound.status.STOPPED} url="" /> 
     </div> 
    ); 
} 

Ich habe ReferenceError: Sound is not defined Fehler auf der Vorderseite Rendering (nach webpack).

UPDATE:

Wenn ich versuche, (var, nicht const)

if (typeof window !== 'undefined') { 
    var Sound = require('react-sound'); 
} 

Ich habe TypeError: Cannot read property 'status' of undefined Fehler auf Front-Rendering.

+0

definieren const Ton innerhalb des Blocks, wenn der Umfang innerhalb dieses Blocks begrenzt. bring var Klang = null; außerhalb der Wenn und dann den Wert in der Wenn. – scrappedcola

Antwort

0

Scheint, dass Sie nicht außerhalb einer Browser-Umgebung reagieren können.

Die Lösung kann wie folgt sein:

let SoundEl; 
if (typeof window !== 'undefined') { 
    import Sound from 'react-sound'; 
    SoundEl = <Sound playStatus={Sound.status.STOPPED} url="" /> 
} else { 
    SoundEl = <div></div> 
} 

...

render() { 
    return (
    <div> 
     {SoundEl} 
    </div> 
) 
} 
+0

Invariante Verletzung: Der Elementtyp ist ungültig: erwartet eine Zeichenfolge (für integrierte Komponenten) oder eine Klasse/Funktion (für zusammengesetzte Komponenten), aber erhalten: Objekt. Überprüfen Sie die Render-Methode von ... – Luntegg

+0

versuchen const Sound = erfordern ('react-sound'). Standard oder importieren Sound von 'Reaktionston' (siehe Antwort aktualisiert) – dgrijuela

+0

Gleicher Fehler erneut. – Luntegg

Verwandte Themen