2017-04-25 10 views
2

私は使用 "ウィンドウが定義されていません" MERN - https://github.com/Hashnode/mern-starter(反応Reduxの、WebPACKの、nodejs、発現) と部品反応音 - https://github.com/leoasis/react-soundWebPACKのレンダリング:

Iが含ま成分

import Sound from 'react-sound'; 

とサーバーを起動しようとすると、私は"window is not defined" webpackサーバーレンダリングからエラーがあります。

私はこの行にコメントしてサーバーを起動しても問題ありません。その後、サーバーの実行中に変更がサーバーのレンダリング(フロントレンダリングのみ)をトリガーしないため、この行のコメントを解除してコンポーネントが機能するようになります。

私は(WebPACKの後)フロントレンダリングにReferenceError: Sound is not definedエラーが発生している

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

そして

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

をレンダリングにしてみてください。

UPDATE:私は(var、ないconst

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

しようとした場合

私はフロントレンダリングにTypeError: Cannot read property 'status' of undefinedエラーを持っています。

+0

内部CONSTサウンドを定義:次のように

溶液とすることができます。持っているvar Sound = null; ifの外側でifの値を設定します。 – scrappedcola

答えて

0

反応音はブラウザ環境の外では使用できないようです。ブロックは、そのブロック内にスコープを制限する場合

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

不変違反:要素タイプが無効です:文字列(組み込みコンポーネント用)またはクラス/関数(複合コンポーネント用)、got:オブジェクトが必要です。 ... – Luntegg

+0

試してみましょうSound = require( '反応音')。デフォルトまたはインポート '反応音'のサウンド(回答の更新を参照) – dgrijuela

+0

同じエラーが再び発生します。 – Luntegg

関連する問題