2016-04-06 10 views
1

関数をファイルにインポートし、そのファイルから関数をエクスポートしようとしています。これは簡単なはずですが、何らかの理由でそれを動作させることができません。module.exportsとES6を使用してインポートをエクスポートする

search_action.js

function search_actions() { 

    this.receive_results = function() { 
     return { 
      type: 'RECEIVE_RESULTS', 
      results: results 
      } 
     } 
} 

module.exports = search_actions 

index.js

require('es6-promise').polyfill(); 
var SearchActions = require('./search_actions.js') 
var search_actions = new SearchActions() 
//console.log(search_actions.receive_results) 
export search_actions.receive_results 

index.jsの底に輸出が事実にもかかわらず、予期しないトークンで失敗することはconsole.log(search_actions.receive_results)プリント関数。では、これを行う正しい方法は何ですか?

+0

*「予期しないトークンは」* * *あなたは、構文エラーを有することを意味します。 'search_actions.receive_results'が正しい値を持っているかどうかは、何もしません。 –

答えて

1

あなたの再輸出の最後の行は有効ではありません。

export search_actions.receive_results 

輸出は、非修飾名を必要としてあなたは、右側にfoo.bar参照を使用することはできません。

export default { 
    search_actions: search_actions.receive_results 
} 

は輸出構文については、仕様のsection 15.2.3を参照してください:あなたは、オブジェクトの宣言とエクスポート内のフィールドを参照することができます。あなたが取り組んでいる問題は、オブジェクトまたはローカル変数が解決する、エクスポートの一部分であるx.yです。

あなたにもES6 importを使用していた場合、あなたも行うことができます:

import {receive_results} from 'search_actions'; 
export default receive_results; 
+0

ありがとうございますが、どちらもうまくいきません。これは動作します:エクスポート関数receive_results(結果){ \tリターン{ \t \tタイプ: 'RECEIVE_RESULTS'、 \t \t結果:結果 \t} } – joshlevy89

+0

しかし、私はindex.jsにそれを書くことを避けるためにしようとしています(search_actions.jsからインポートし、返された関数をエクスポートする) – joshlevy89

+0

'import'を使うか、関数に変数を代入すれば、それを行うことができます。実際には点線で囲まれていない参照が必要です。 – ssube

関連する問題