2017-12-29 30 views
1

Auf der Serverseite (nodejs/express) habe ich keine Probleme beim Exportieren und Referenzieren dieser Datei (mit Versuch1).Exportieren Funktion in ES6/reagieren

Auf der Client-Seite (React), ich bin nur nicht in der Lage zu verweisen und Zugriff auf die Funktion getData. Unten sind einige der Kombinationen, die ich versucht habe. Keine von ihnen funktioniert. Wie kann ich es zum Laufen bringen?

// Attempt1: export 
// module.exports.getter = instanceOfCollection.getData; 

// Attempt1: import 
// const getter = require('./collectionFile').getter; 
// Uncaught TypeError: getter is not a function 

// Attempt2: export 
// export default { instanceOfCollection }; 

// Attempt2: import 
// import instanceOfCollection from './collectionFile'; 
// const instance = instanceOfCollection.getData; 
// Uncaught TypeError: Cannot read property 'getData' of undefined 

// Attempt3: export 
// export const instanceOfCollection = collection(); 

// Attempt3: import 
// import { instanceOfCollection } from './collectionFile'; 
// const instance = instanceOfCollection.getData; 
// Uncaught TypeError: Cannot read property 'getData' of undefined 

Edit: Es stellte sich heraus, dass ich die Datei A von Datei B wurde Referenzierung und auch B von Datei-Datei, die eine frühere

+0

Können Sie Ihre Dateistruktur einschließen? –

+0

Verwenden Sie und Modul Bundler oder sind es nur mehrere Javascript-Dateien? – Axnyff

+0

Es gibt nur 2 Dateien im selben Ordner. Ich importiere die Datei collectionFile.js aus der anderen Datei.Beachten Sie, dass ich keine Probleme beim Exportieren von Konstanten habe. –

Antwort

3

Es gibt eine Menge Möglichkeiten, solche Dinge zu tun:

  1. ES5 Export

    module.export = instanceOfCollection

    dann 0

    var getData = require('my_module').getData

  2. ES6 Export

    export defualt instanceOfCollection

    dann

    import { getData, setData } from 'my_module'

  3. ES6 namens e xport

    export const setter = instanceOfCollection.setData export const getter = instanceOfCollection.getData

    dann

    import { setter, getter } from 'my_module'

    oder

    import * as myCollection from 'my_module' myCollection.getter() myCollection.setter()

  4. ES5 mit Umbenennungs

    module.export = { getter: instanceOfCollection.getData, setter: instanceOfCollection.setData, }

    dann

    const { setter, getter } = require('my_module')

    oder

    const getter = require('my_module').getter const setter = require('my_module').setter

Hoffnung einige von ihnen für Sie arbeiten.

+0

'Import {getData, setData} von 'my_module'' funktioniert nicht. Ich versuche die anderen. –

+0

@KayaToast Siehst du, wie ich es exportiere? Ohne geschweifte Klammern! –

+0

Ja, ich war vorsichtig mit den Zahnspangen. Ich habe sie alle ausprobiert. Keine von ihnen funktioniert. Danke für die Vorschläge. –

Verwandte Themen