2016-03-28 17 views
2

私はフロントエンドのものに反応して、単純なフラスコのアプリを作っています。今、私はReactコンポーネントを他のファイルからインポートすることを試していますが、成功することはありません。React - Uncaught ReferenceError:requireが定義されていません

<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>Index page</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 

    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.7/react.min.js"></script> 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.7/react-dom.min.js"></script> 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.min.js"></script> 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> 
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.0.16/css/bulma.min.css"> 
    <link rel="stylesheet" type="text/css" href="/static/css/style.css"> 
</head> 
<body> 
    <div class="columns"> 
     <div class="column"> 
      some stuff 
     </div> 
     <div class="column"> 
      <div id="index"></div> 
     </div> 
    </div> 
    <script type="text/babel" src="static/js/index.js"></script> 
</body> 
</html> 

と私のindex.js:最後に

import FormComponent from './FormComponent.js'; 

var MainClass = React.createClass({ 
    render:function(){ 
    return (
     <div> 
     <div>this is the main component</div> 
     <div><FormComponent /></div> 
     </div> 
    ); 
    } 
}); 


ReactDOM.render(<MainClass />, document.getElementById('index')); 

Uncaught ReferenceError: require is not defined

これは私のhtmlファイルである:これは私が取得していますエラーですFormCommponent.js、同じフォルダ内にあります:

var FormComponent = React.createClass({ 

    render: function() { 
    return (
     <div>this is an imported component</div> 
    ); 
    } 

}); 

module.exports = FormComponent; 

私は間違っていることを知っていますか?

私はパッケージマネージャーを使用していません。

EDIT
下記のように、browserifyを使用して問題を解決しました。 ヘルプありがとう

+0

'require' *のみ*は、Browserifyやその他のソリューションを使用している場合は、フロントエンドのクライアント側コードで動作します。ブラウザはネイティブの 'require'定義を持っていません。 –

答えて

5

ロールアップ、Webpack、またはBrowserifyのようなものを使用する必要があります。この文import FormComponent from './FormComponent.js';は、クライアント上に何も意味しません。それをネイティブにサポートしているブラウザはありませんので、ブラウザで実際に使用できるものにするためには、上記のツールのようなものが必要です。

ファイルがないと、index.htmlにファイルをロードするだけで済みます。

+0

[ブラウザーハンドブック](https://github.com/browserify/browserify-handbook)は、これが何であるかを理解していない人にとってなぜこれが必要なのかをよく説明しています。 –

関連する問題