2016-04-06 15 views
1

Ich versuche, eine Funktion in eine Datei zu importieren und dann aus dieser Datei zu exportieren. Das sollte einfach sein, aber aus irgendeinem Grund kann ich es nicht zum Laufen bringen.Exportieren von Importen mit module.exports und 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 

Der Export an der Unterseite des index.js mit unerwartetem Token trotz der Tatsache nicht, dass console.log (search_actions.receive_results) Drucke die Funktion. Was ist der richtige Weg, dies zu tun?

+0

* "unerwartetes Token" * Bedeutet, dass Sie * a * Syntaxfehler haben. Es hat nichts zu tun, ob 'search_actions.receive_results' den richtigen Wert hat oder nicht. –

Antwort

1

Die letzte Zeile der Wiederausfuhr ist nicht gültig:

export search_actions.receive_results 

Sie keine foo.bar Referenz auf der rechten Seite verwenden können, da der Export einen unvollständigen Namen braucht. Sie können das Feld innerhalb einer Objektdeklaration verweisen und exportieren, dass:

export default { 
    search_actions: search_actions.receive_results 
} 

Siehe section 15.2.3 der Spezifikation für den Export Syntax. Das Problem, auf das Sie stoßen, ist der x.y Teil des Exports, den ein Objekt oder eine lokale Variable auflösen wird.

Wenn Sie das ES6 import auch verwendet haben, können Sie auch tun:

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

Danke, aber das funktioniert auch nicht. Dies funktioniert: Exportfunktion receive_results (Ergebnisse) { \t return { \t \t Typ: 'RECEIVE_RESULTS', \t \t Ergebnisse: Ergebnisse \t} } – joshlevy89

+0

Aber ich versuche zu vermeiden, in index.js zu schreiben, (würde lieber von search_actions.js importieren und dann die zurückgegebene Funktion exportieren) – joshlevy89

+0

Wenn Sie 'import' verwenden oder die Funktion einer Variablen zuweisen, können Sie das tun. Sie brauchen wirklich nur eine unpunktierte Referenz. – ssube

Verwandte Themen