2016-04-06 89 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