2017-04-25 2 views
2

J'utilise MERN - https://github.com/Hashnode/mern-starter (réagir, redux, webpack, nodejs, exprimer) et composants réagissent-son - https://github.com/leoasis/react-soundWebpack rendu: "la fenêtre est pas définie"

Lorsque j'inclus le composant

import Sound from 'react-sound'; 

et essayez de démarrer le serveur, j'ai "window is not defined" erreur de rendu serveur webpack. Mais si je commente cette ligne et démarre le serveur, tout ira bien. Après cela, je peux décommenter cette ligne et le composant fonctionnera, car lorsque le serveur est en cours d'exécution, les changements ne déclenchent pas le rendu du serveur (seulement le rendu frontal).

Si je tente

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

Et rendre

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

Je ReferenceError: Sound is not defined erreur sur le rendu avant (après webpack).

MISE À JOUR:

Si j'essayer (var, non const)

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

Je TypeError: Cannot read property 'status' of undefined erreur sur le rendu avant.

+0

définissant const sonore à l'intérieur du bloc si limite le champ à l'intérieur de ce bloc. Apportez var Sound = null; en dehors de la si et ensuite définir la valeur dans le si. – scrappedcola

Répondre

0

Semble que vous ne pouvez pas utiliser le son de réaction en dehors d'un environnement de navigateur.

La solution peut être la suivante:

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

Violation invariante: Le type d'élément est invalide: une chaîne attendue (pour les composants intégrés) ou une classe/fonction (pour les composants composites) mais obtenue: objet. Vérifiez la méthode de rendu de ... – Luntegg

+0

try const Sound = require ('react-sound') .par défaut ou importez le son de 'react-sound' (voir la réponse mise à jour) – dgrijuela

+0

Encore la même erreur. – Luntegg